{"posts":[{"fileName":"gipeLHNM2","abstract":"","description":"ADB工具 1. 获取设备序列号 adb get-serialno 2. 获取设备电量 adb shell dumpsys battery adb shell dumpsys battery set usb 1 设置为USB充电状态 ...","title":"ADB工具简单学习（一）","tags":[{"name":"ADB","slug":"CkL42eVrY","used":true,"link":"https://zydnc.gitee.io/CkL42eVrY/"},{"name":"调试","slug":"2V4hmsWjwD","used":true,"link":"https://zydnc.gitee.io/2V4hmsWjwD/"}],"feature":"http://pic.zyblog.xyz/blog/poster/ADB.png","link":"https://zydnc.gitee.io/gipeLHNM2/","stats":{"text":"3 min read","time":147000,"words":517,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li><a href=\"#adb%E5%B7%A5%E5%85%B7\">ADB工具</a><br>\n*\n<ul>\n<li><a href=\"#1-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E5%BA%8F%E5%88%97%E5%8F%B7\">1. 获取设备序列号</a></li>\n<li><a href=\"#2-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E7%94%B5%E9%87%8F\">2. 获取设备电量</a></li>\n<li><a href=\"#3-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E5%86%85%E5%AD%98\">3. 获取设备内存</a></li>\n<li><a href=\"#4-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E5%AE%B9%E9%87%8F\">4. 获取设备容量</a></li>\n<li><a href=\"#5-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E5%88%97%E8%A1%A8\">5. 获取设备列表</a></li>\n<li><a href=\"#6-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E7%8A%B6%E6%80%81\">6. 获取设备状态</a></li>\n<li><a href=\"#7-%E5%AE%89%E8%A3%85%E5%BA%94%E7%94%A8\">7. 安装应用</a></li>\n<li><a href=\"#8-%E5%8D%B8%E8%BD%BD%E5%BA%94%E7%94%A8\">8. 卸载应用</a></li>\n<li><a href=\"#9-%E6%96%87%E4%BB%B6%E4%BA%92%E4%BC%A0\">9. 文件互传</a></li>\n<li><a href=\"#10-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E4%B8%8A%E6%89%80%E6%9C%89%E5%BA%94%E7%94%A8%E4%BF%A1%E6%81%AF\">10. 获取设备上所有应用信息</a></li>\n<li><a href=\"#11-%E8%AE%BE%E5%A4%87%E9%87%8D%E5%90%AF\">11. 设备重启</a></li>\n<li><a href=\"#12-%E6%9F%A5%E7%9C%8Bandroid%E7%B3%BB%E7%BB%9F%E7%89%88%E6%9C%AC\">12. 查看Android系统版本</a></li>\n<li><a href=\"#13-%E8%8E%B7%E5%8F%96cpu%E4%BF%A1%E6%81%AF\">13. 获取CPU信息</a></li>\n<li><a href=\"#14-%E8%AE%BE%E5%A4%87%E5%85%B3%E6%9C%BA\">14. 设备关机</a></li>\n<li><a href=\"#15-%E5%B1%8F%E5%B9%95%E7%82%B9%E5%87%BB%E4%BA%8B%E4%BB%B6\">15. 屏幕点击事件</a></li>\n<li><a href=\"#16-%E5%B1%8F%E5%B9%95%E6%BB%91%E5%8A%A8%E4%BA%8B%E4%BB%B6\">16. 屏幕滑动事件</a></li>\n<li><a href=\"#17-%E5%B1%8F%E5%B9%95%E6%8C%89%E9%94%AE%E4%BA%8B%E4%BB%B6\">17. 屏幕按键事件</a></li>\n<li><a href=\"#18-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E5%9E%8B%E5%8F%B7\">18. 获取设备型号</a></li>\n</ul>\n</li>\n</ul>\n","date":"2023-05-14 22:00:10","dateFormat":"2023-05-14"},{"fileName":"RGEfzFph6","abstract":"","description":"CRON表达式 为程序中的定时任务做执行计划和执行编排的一种表达式 一、基本格式 {秒数}{分钟数}{小时数}{日期}{月份}{星期}{年份[可空]} 1. 详解 1.1 {秒数} 范围：0-59 限制：不许为空 注意：值不合法，...","title":"CRON表达式学习","tags":[{"name":"定时任务","slug":"5Mbcv-a6s","used":true,"link":"https://zydnc.gitee.io/5Mbcv-a6s/"},{"name":"CRON","slug":"140ktsFoqj","used":true,"link":"https://zydnc.gitee.io/140ktsFoqj/"}],"feature":"http://pic.zyblog.xyz/blog/poster/CRON.png","link":"https://zydnc.gitee.io/RGEfzFph6/","stats":{"text":"6 min read","time":316000,"words":1429,"minutes":6},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li><a href=\"#cron%E8%A1%A8%E8%BE%BE%E5%BC%8F\">CRON表达式</a>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%9F%BA%E6%9C%AC%E6%A0%BC%E5%BC%8F\">一、基本格式</a>\n<ul>\n<li><a href=\"#1-%E8%AF%A6%E8%A7%A3\">1. 详解</a>\n<ul>\n<li><a href=\"#11-%E7%A7%92%E6%95%B0\">1.1 <code>{秒数}</code></a></li>\n<li><a href=\"#12-%E5%88%86%E9%92%9F%E6%95%B0\">1.2 <code>{分钟数}</code></a></li>\n<li><a href=\"#13-%E5%B0%8F%E6%97%B6%E6%95%B0\">1.3 <code>{小时数}</code></a></li>\n<li><a href=\"#14-%E6%97%A5%E6%9C%9F\">1.4 <code>{日期}</code></a></li>\n<li><a href=\"#15-%E6%9C%88%E4%BB%BD\">1.5 <code>{月份}</code></a></li>\n<li><a href=\"#16-%E6%98%9F%E6%9C%9F\">1.6 <code>{星期}</code></a></li>\n<li><a href=\"#17-%E5%B9%B4%E4%BB%BD\">1.7 <code>{年份}</code></a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E7%BB%8F%E5%85%B8%E6%A1%88%E4%BE%8B\">2. 经典案例</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2023-03-07 15:57:27","dateFormat":"2023-03-07"},{"fileName":"fgzXm9vap","abstract":"","description":"SpringSecurity 一、初识SpringSecurity 1. 基本概念 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下...","title":"SpringSecurity学习","tags":[{"index":-1,"name":"SpringSecurity","slug":"springsecurity","used":true,"link":"https://zydnc.gitee.io/springsecurity/"},{"name":"权限框架","slug":"6gNoeLTph","used":true,"link":"https://zydnc.gitee.io/6gNoeLTph/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Security.png","link":"https://zydnc.gitee.io/fgzXm9vap/","stats":{"text":"47 min read","time":2817000,"words":9932,"minutes":47},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#springsecurity\">SpringSecurity</a>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%88%9D%E8%AF%86springsecurity\">一、初识SpringSecurity</a></li>\n<li><a href=\"#1-%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5\">1. 基本概念</a></li>\n<li><a href=\"#2-%E8%BF%87%E6%BB%A4%E5%99%A8%E9%93%BE\">2. 过滤器链</a></li>\n<li><a href=\"#3-%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B%E5%9B%BE\">3. 认证流程图</a></li>\n<li><a href=\"#4-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8\">4. 快速入门</a>\n<ul>\n<li><a href=\"#41-%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96\">4.1 引入依赖</a></li>\n<li><a href=\"#12-%E5%88%9B%E5%BB%BA%E5%90%AF%E5%8A%A8%E7%B1%BB\">1.2 创建启动类</a></li>\n<li><a href=\"#13-%E7%AE%80%E5%8D%95yml%E9%85%8D%E7%BD%AE\">1.3 简单yml配置</a></li>\n<li><a href=\"#14-%E4%B9%A6%E5%86%99%E7%AE%80%E5%8D%95controller\">1.4 书写简单Controller</a></li>\n<li><a href=\"#15-%E8%AE%BF%E9%97%AE%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80-localhosttest\">1.5 访问项目地址 localhost/test</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-securityconfig%E9%85%8D%E7%BD%AE%E7%B1%BB\">二、SecurityConfig配置类</a>\n<ul>\n<li><a href=\"#1-csrf\">1. csrf</a></li>\n<li><a href=\"#2-formlogin\">2. formLogin</a></li>\n<li><a href=\"#3-authorizerequests\">3. authorizeRequests</a>\n<ul>\n<li><a href=\"#31-antmatchers\">3.1 antMatchers</a></li>\n<li><a href=\"#32-regexmatchers\">3.2 regexMatchers</a></li>\n<li><a href=\"#33-mvcmatchers\">3.3 mvcMatchers</a></li>\n<li><a href=\"#34-anyrequests\">3.4 anyRequests</a></li>\n</ul>\n</li>\n<li><a href=\"#4-exceptionhandling\">4. exceptionHandling</a></li>\n<li><a href=\"#5-rememberme\">5. rememberMe</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B\">三、认证流程</a>\n<ul>\n<li><a href=\"#1-%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E7%99%BB%E5%BD%95%E9%AA%8C%E8%AF%81%E5%AF%B9%E8%B1%A1\">1. 实现自定义的登录验证对象</a>\n<ul>\n<li><a href=\"#11-%E8%87%AA%E5%AE%9A%E4%B9%89%E7%94%A8%E6%88%B7%E5%AE%9E%E4%BD%93%E7%B1%BB\">1.1 自定义用户实体类</a></li>\n<li><a href=\"#12-%E5%AE%9E%E7%8E%B0userdetails%E6%8E%A5%E5%8F%A3%E5%88%9B%E5%BB%BA%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E9%AA%8C%E8%AF%81%E5%AF%B9%E8%B1%A1\">1.2 实现UserDetails接口创建自定义的验证对象</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E7%99%BB%E5%BD%95%E9%80%BB%E8%BE%91\">2. 实现自定义的登录逻辑</a></li>\n<li><a href=\"#3-securityconfig\">3. SecurityConfig</a></li>\n<li><a href=\"#4-%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E7%99%BB%E5%BD%95%E6%9C%8D%E5%8A%A1%E5%AF%B9%E7%94%A8%E6%88%B7%E8%BF%9B%E8%A1%8C%E8%AE%A4%E8%AF%81\">4. 实现自定义的登录服务对用户进行认证</a></li>\n<li><a href=\"#5-%E7%BC%96%E5%86%99controller\">5. 编写Controller</a></li>\n<li><a href=\"#6-%E5%AE%9E%E7%8E%B0token%E8%AE%A4%E8%AF%81%E8%BF%87%E6%BB%A4%E5%99%A8\">6. 实现Token认证过滤器</a></li>\n<li><a href=\"#7-%E6%9B%B4%E6%96%B0securityconfig%E9%85%8D%E7%BD%AE\">7. 更新SecurityConfig配置</a></li>\n<li><a href=\"#8-%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95\">8. 退出登录</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%9B%9B-%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E5%9C%BA%E6%99%AF%E4%B8%8B%E7%99%BB%E5%BD%95%E8%AE%A4%E8%AF%81%E8%B7%B3%E8%BD%AC%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88\">四、前后端分离场景下登录认证跳转解决方案</a>\n<ul>\n<li><a href=\"#1-%E9%87%8D%E5%86%99%E8%AE%A4%E8%AF%81%E6%8E%88%E6%9D%83%E6%88%90%E5%8A%9F%E5%A4%84%E7%90%86%E5%99%A8\">1. 重写认证授权成功处理器</a></li>\n<li><a href=\"#2-%E9%87%8D%E5%86%99%E8%AE%A4%E8%AF%81%E6%8E%88%E6%9D%83%E5%A4%B1%E8%B4%A5%E5%A4%84%E7%90%86%E5%99%A8\">2. 重写认证授权失败处理器</a></li>\n<li><a href=\"#3-%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E5%A4%84%E7%90%86%E5%99%A8\">3. 配置自定义处理器</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%94-%E6%8E%88%E6%9D%83%E6%B5%81%E7%A8%8B\">五、授权流程</a>\n<ul>\n<li><a href=\"#1-%E6%8E%88%E6%9D%83%E5%AE%9E%E7%8E%B0\">1. 授权实现</a>\n<ul>\n<li><a href=\"#11-%E9%99%90%E5%88%B6%E8%AE%BF%E9%97%AE%E8%B5%84%E6%BA%90%E6%89%80%E9%9C%80%E6%9D%83%E9%99%90\">1.1 限制访问资源所需权限</a></li>\n<li><a href=\"#12-%E5%B0%81%E8%A3%85%E6%9D%83%E9%99%90%E4%BF%A1%E6%81%AF\">1.2 封装权限信息</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E5%9F%BA%E4%BA%8E%E8%A7%92%E8%89%B2%E7%9A%84%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6rbac\">2. 基于角色的权限控制（RBAC）</a>\n<ul>\n<li><a href=\"#21-%E8%AE%BE%E8%AE%A1%E6%95%B0%E6%8D%AE%E8%A1%A8\">2.1 设计数据表</a></li>\n<li><a href=\"#22-%E4%BB%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD%E6%9F%A5%E8%AF%A2%E6%9D%83%E9%99%90%E4%BF%A1%E6%81%AF\">2.2 从数据库中查询权限信息</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%85%AD-access%E6%96%B9%E6%B3%95\">六、access方法</a>\n<ul>\n<li><a href=\"#1-springsecurity%E8%A7%84%E5%AE%9A%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E8%A1%A8%E8%BE%BE%E5%BC%8F\">1. SpringSecurity规定一些常用表达式</a></li>\n<li><a href=\"#2-%E8%87%AA%E5%AE%9A%E4%B9%89%E8%A1%A8%E8%BE%BE%E5%BC%8F\">2. 自定义表达式</a>\n<ul>\n<li><a href=\"#21-%E5%88%9B%E5%BB%BA%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A5%E5%8F%A3\">2.1 创建自定义接口</a></li>\n<li><a href=\"#22-%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A5%E5%8F%A3\">2.2 实现自定义接口</a></li>\n<li><a href=\"#23-%E5%9C%A8securityconfig%E4%B8%AD%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E8%A1%A8%E8%BE%BE%E5%BC%8F\">2.3 在SecurityConfig中配置自定义表达式</a></li>\n<li><a href=\"#24-%E4%BD%BF%E7%94%A8%E6%B3%A8%E8%A7%A3%E8%B0%83%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E8%A1%A8%E8%BE%BE%E5%BC%8F\">2.4 使用注解调用自定义表达式</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%83-%E8%87%AA%E5%AE%9A%E4%B9%89403%E5%A4%84%E7%90%86%E6%96%B9%E6%A1%88\">七、自定义403处理方案</a>\n<ul>\n<li><a href=\"#1-%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%A4%E8%AF%81%E5%A4%B1%E8%B4%A5%E5%A4%84%E7%90%86\">1. 自定义认证失败处理</a>\n<ul>\n<li><a href=\"#11-%E5%AE%9E%E7%8E%B0authenticationentrypoint%E6%8E%A5%E5%8F%A3\">1.1 实现<code>AuthenticationEntryPoint</code>接口</a></li>\n<li><a href=\"#12-%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%A4%E8%AF%81%E5%A4%B1%E8%B4%A5%E5%A4%84%E7%90%86%E5%99%A8\">1.2 配置自定义认证失败处理器</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%88%E6%9D%83%E5%A4%B1%E8%B4%A5%E5%A4%84%E7%90%86\">2. 自定义授权失败处理</a>\n<ul>\n<li><a href=\"#21-%E5%AE%9E%E7%8E%B0accessdeniedhandler%E6%8E%A5%E5%8F%A3\">2.1 实现<code>AccessDeniedHandler</code>接口</a></li>\n<li><a href=\"#22-%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%88%E6%9D%83%E5%A4%B1%E8%B4%A5%E5%A4%84%E7%90%86%E5%99%A8\">2.2 配置自定义授权失败处理器</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%85%AB-rememberme%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0\">八、RememberMe功能实现</a></li>\n<li><a href=\"#%E4%B9%9D-%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95%E5%A4%84%E7%90%86%E5%99%A8\">九、退出登录处理器</a>\n<ul>\n<li><a href=\"#1-%E4%B9%A6%E5%86%99%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95%E4%BB%A3%E7%A0%81\">1. 书写退出登录代码</a></li>\n<li><a href=\"#2-%E5%AE%9E%E7%8E%B0%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95%E5%A4%84%E7%90%86%E5%99%A8\">2. 实现退出登录处理器</a></li>\n<li><a href=\"#3-%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95%E5%A4%84%E7%90%86%E5%99%A8\">3. 配置自定义退出登录处理器</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%8D%81-csrf%E5%92%8Ccors\">十、CSRF和CORS</a>\n<ul>\n<li><a href=\"#1-springboot%E5%BC%80%E5%90%AF%E8%B7%A8%E5%9F%9F\">1. SpringBoot开启跨域</a></li>\n<li><a href=\"#2-springsecurity%E5%BC%80%E5%90%AF%E8%B7%A8%E5%9F%9F\">2. SpringSecurity开启跨域</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%8D%81%E4%B8%80-oauth2%E5%8D%8F%E8%AE%AE\">十一、Oauth2协议</a>\n<ul>\n<li><a href=\"#1-%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5-2\">1. 基本概念</a></li>\n<li><a href=\"#2-%E6%8E%88%E6%9D%83%E6%A8%A1%E5%BC%8F\">2. 授权模式</a>\n<ul>\n<li><a href=\"#1-%E6%8E%88%E6%9D%83%E7%A0%81%E6%A8%A1%E5%BC%8F\">①. 授权码模式</a></li>\n<li><a href=\"#2-%E7%AE%80%E5%8C%96%E6%8E%88%E6%9D%83%E6%A8%A1%E5%BC%8F\">②. 简化授权模式</a></li>\n<li><a href=\"#3-%E5%AF%86%E7%A0%81%E6%A8%A1%E5%BC%8F\">③. 密码模式</a></li>\n<li><a href=\"#4-%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%A8%A1%E5%BC%8F\">④. 客户端模式</a></li>\n<li><a href=\"#5-%E5%88%B7%E6%96%B0%E4%BB%A4%E7%89%8C\">⑤. 刷新令牌</a></li>\n</ul>\n</li>\n<li><a href=\"#3-springsecurity-oauth2%E6%9E%B6%E6%9E%84\">3. SpringSecurity Oauth2架构</a>\n<ul>\n<li><a href=\"#1-%E6%8E%88%E6%9D%83%E6%9C%8D%E5%8A%A1%E5%99%A8\">①. 授权服务器</a></li>\n<li><a href=\"#2-springsecurityoauth2%E6%B5%81%E7%A8%8B\">②. SpringSecurityOauth2流程</a></li>\n<li><a href=\"#3-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8\">③. 快速入门</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%8D%81%E4%BA%8C-jwt\">十二、JWT</a>\n<ul>\n<li><a href=\"#1-%E5%B8%B8%E8%A7%81%E7%9A%84%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6\">1. 常见的认证机制</a></li>\n<li><a href=\"#2-token-auth\">2. Token Auth</a></li>\n<li><a href=\"#3-%E4%BB%80%E4%B9%88%E6%98%AFjwt\">3. 什么是JWT</a>\n<ul>\n<li><a href=\"#31-jwt%E7%9A%84%E4%BC%98%E7%82%B9\">3.1 JWT的优点</a></li>\n</ul>\n</li>\n<li><a href=\"#4-jwt%E7%BB%84%E6%88%90\">4. JWT组成</a>\n<ul>\n<li><a href=\"#41-%E5%A4%B4%E9%83%A8\">4.1 头部</a></li>\n<li><a href=\"#42-%E8%B4%9F%E8%BD%BDpayload\">4.2 负载（Payload）</a></li>\n<li><a href=\"#43-%E7%AD%BE%E8%AF%81signature\">4.3 签证（Signature）</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8\">5. 快速入门</a>\n<ul>\n<li><a href=\"#51-%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96\">5.1 引入依赖</a></li>\n<li><a href=\"#52-%E4%B9%A6%E5%86%99%E5%B7%A5%E5%85%B7%E7%B1%BB\">5.2 书写工具类</a></li>\n<li><a href=\"#53-redis%E5%B7%A5%E5%85%B7%E7%B1%BB\">5.3 Redis工具类</a></li>\n<li><a href=\"#54-redis%E5%BA%8F%E5%88%97%E5%8C%96%E7%B1%BB\">5.4 Redis序列化类</a></li>\n<li><a href=\"#55-redis%E9%85%8D%E7%BD%AE%E7%B1%BB\">5.5 Redis配置类</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2023-02-24 22:07:33","dateFormat":"2023-02-24"},{"fileName":"Vr0OXGyK8","abstract":"","description":"一、Vue简介 1. Vue特点 采用组件化模式，提高代码复用率让代码更好维护 声明式编码，无需操作DOM，提高开发效率 使用虚拟DOM+Diff算法，尽量复用DOM节点 2. 起步 初学者不建议使用vue-cli安装，请用scrip...","title":"Vue2复习&Vue3学习","tags":[{"index":-1,"name":"Vue2.0","slug":"2TtDJFHeW","used":true,"link":"https://zydnc.gitee.io/2TtDJFHeW/"},{"index":-1,"name":"Vue3.0","slug":"co7VEnPhv","used":true,"link":"https://zydnc.gitee.io/co7VEnPhv/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Vue.png","link":"https://zydnc.gitee.io/Vr0OXGyK8/","stats":{"text":"76 min read","time":4534000,"words":17061,"minutes":76},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-vue%E7%AE%80%E4%BB%8B\">一、Vue简介</a>\n<ul>\n<li><a href=\"#1-vue%E7%89%B9%E7%82%B9\">1. Vue特点</a></li>\n<li><a href=\"#2-%E8%B5%B7%E6%AD%A5\">2. 起步</a></li>\n<li><a href=\"#3-%E5%88%9D%E8%AF%86\">3. 初识</a></li>\n<li><a href=\"#4-%E6%A8%A1%E6%9D%BF%E8%AF%AD%E6%B3%95\">4. 模板语法</a>\n<ul>\n<li><a href=\"#41-%E6%8F%92%E5%80%BC%E8%AF%AD%E6%B3%95%E6%8F%92%E5%80%BC%E8%A1%A8%E8%BE%BE%E5%BC%8F\">4.1 插值语法（插值表达式）</a>\n<ul>\n<li><a href=\"#1-%E6%8F%92%E5%80%BC%E8%A1%A8%E8%BE%BE%E5%BC%8F\">①. 插值表达式</a></li>\n</ul>\n</li>\n<li><a href=\"#42-%E6%8C%87%E4%BB%A4%E8%AF%AD%E6%B3%95%E5%B1%9E%E6%80%A7%E7%BB%91%E5%AE%9A\">4.2 指令语法（属性绑定）</a>\n<ul>\n<li><a href=\"#2-%E5%B1%9E%E6%80%A7%E7%BB%91%E5%AE%9A\">②. 属性绑定</a></li>\n<li><a href=\"#2-%E5%8F%8C%E5%90%91%E7%BB%91%E5%AE%9A\">②. 双向绑定</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#5-%E5%AE%B9%E5%99%A8%E7%BB%91%E5%AE%9A%E4%B8%A4%E7%A7%8D%E6%96%B9%E5%BC%8F\">5. 容器绑定两种方式</a>\n<ul>\n<li><a href=\"#51-%E6%96%B9%E5%BC%8F%E4%B8%80el%E7%BB%91%E5%AE%9A\">5.1 方式一：el绑定</a></li>\n<li><a href=\"#52-%E6%96%B9%E5%BC%8F%E4%BA%8Cmount%E6%8C%82%E8%BD%BD\">5.2 方式二：mount挂载</a></li>\n</ul>\n</li>\n<li><a href=\"#6-data%E5%B1%9E%E6%80%A7%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%86%99%E6%B3%95\">6. data属性的两种写法</a>\n<ul>\n<li><a href=\"#61-%E6%96%B9%E5%BC%8F%E4%B8%80%E5%AF%B9%E8%B1%A1%E5%BD%A2%E5%BC%8F\">6.1 方式一：对象形式</a></li>\n<li><a href=\"#62-%E6%96%B9%E5%BC%8F%E4%BA%8C%E5%87%BD%E6%95%B0%E5%BD%A2%E5%BC%8F\">6.2 方式二：函数形式</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-mvvm%E7%AE%80%E4%BB%8B\">二、MVVM简介</a>\n<ul>\n<li><a href=\"#1-mvvm%E6%A8%A1%E5%9E%8B%E7%BB%84%E6%88%90\">1. MVVM模型组成</a>\n<ul>\n<li><a href=\"#11-m%E6%A8%A1%E5%9E%8Bmodel\">1.1 M：模型（Model）</a></li>\n<li><a href=\"#12-v%E8%A7%86%E5%9B%BEview\">1.2 V：视图（View）</a></li>\n<li><a href=\"#13-vm%E8%A7%86%E5%9B%BE%E6%A8%A1%E5%9E%8B\">1.3 VM：视图模型</a></li>\n</ul>\n</li>\n<li><a href=\"#2-objectdefineproperty\">2. Object.defineProperty</a>\n<ul>\n<li><a href=\"#21-es6%E4%B8%BA%E5%AF%B9%E8%B1%A1%E6%B7%BB%E5%8A%A0%E5%B1%9E%E6%80%A7\">2.1 ES6为对象添加属性</a></li>\n<li><a href=\"#22-%E6%95%B0%E6%8D%AE%E4%BB%A3%E7%90%86\">2.2 数据代理</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86\">3. 事件处理</a>\n<ul>\n<li><a href=\"#31-methods\">3.1 methods</a></li>\n<li><a href=\"#32-%E4%BA%8B%E4%BB%B6%E7%BB%91%E5%AE%9A\">3.2 事件绑定</a></li>\n<li><a href=\"#33-%E4%BA%8B%E4%BB%B6%E4%BF%AE%E9%A5%B0%E7%AC%A6\">3.3 事件修饰符</a></li>\n<li><a href=\"#34-%E9%94%AE%E7%9B%98%E4%BA%8B%E4%BB%B6\">3.4 键盘事件</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7\">4. 计算属性</a>\n<ul>\n<li><a href=\"#41-%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5\">4.1 基本概念</a></li>\n<li><a href=\"#42-getter%E5%92%8Csetter%E8%B0%83%E7%94%A8%E6%97%B6%E6%9C%BA\">4.2 getter和setter调用时机</a></li>\n<li><a href=\"#43-%E7%AE%80%E5%86%99%E5%BD%A2%E5%BC%8F\">4.3 简写形式</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E7%9B%91%E8%A7%86%E5%B1%9E%E6%80%A7\">5. 监视属性</a>\n<ul>\n<li><a href=\"#51-%E5%9C%A8watch%E5%B1%9E%E6%80%A7%E4%B8%AD%E4%B9%A6%E5%86%99%E7%9B%91%E8%A7%86%E5%86%85%E5%AE%B9\">5.1 在watch属性中书写监视内容</a></li>\n<li><a href=\"#52-vm%E5%AE%9E%E4%BE%8B%E8%B0%83%E7%94%A8watch%E6%96%B9%E6%B3%95%E4%B9%A6%E5%86%99%E7%9B%91%E8%A7%86%E5%86%85%E5%AE%B9\">5.2 vm实例调用$watch方法书写监视内容</a></li>\n<li><a href=\"#53-%E6%B7%B1%E5%BA%A6%E7%9B%91%E8%A7%86\">5.3 深度监视</a></li>\n<li><a href=\"#54-%E7%AE%80%E5%86%99%E5%BD%A2%E5%BC%8F\">5.4 简写形式</a></li>\n</ul>\n</li>\n<li><a href=\"#6-%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7%E4%B8%8E%E7%9B%91%E8%A7%86%E5%B1%9E%E6%80%A7%E7%9A%84%E5%8C%BA%E5%88%AB\">6. 计算属性与监视属性的区别</a>\n<ul>\n<li><a href=\"#61-%E5%8C%BA%E5%88%AB\">6.1 区别</a></li>\n<li><a href=\"#62-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">6.2 注意事项</a></li>\n</ul>\n</li>\n<li><a href=\"#7-%E7%BB%91%E5%AE%9A%E6%A0%B7%E5%BC%8F\">7. 绑定样式</a>\n<ul>\n<li><a href=\"#71-%E7%BB%91%E5%AE%9Aclass\">7.1 绑定class</a>\n<ul>\n<li><a href=\"#%E6%AD%A5%E9%AA%A4\">步骤</a></li>\n</ul>\n</li>\n<li><a href=\"#72-%E7%BB%91%E5%AE%9Astyle\">7.2 绑定style</a>\n<ul>\n<li><a href=\"#1-%E5%86%99%E6%B3%95%E4%B8%80\">①. 写法一</a></li>\n<li><a href=\"#2-%E5%86%99%E6%B3%95%E4%BA%8C\">②. 写法二</a></li>\n<li><a href=\"#3-%E5%86%99%E6%B3%95%E4%B8%89\">③. 写法三</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#8-%E6%9D%A1%E4%BB%B6%E6%B8%B2%E6%9F%93\">8. 条件渲染</a>\n<ul>\n<li><a href=\"#81-v-if\">8.1 v-if</a></li>\n<li><a href=\"#82-v-show\">8.2 v-show</a></li>\n<li><a href=\"#83-v-if%E4%B8%8Ev-show%E7%9A%84%E5%8C%BA%E5%88%AB\">8.3 v-if与v-show的区别</a></li>\n<li><a href=\"#84-%E6%9D%A1%E4%BB%B6%E7%9B%B8%E5%90%8C%E6%97%B6%E6%9D%A1%E4%BB%B6%E6%B8%B2%E6%9F%93%E4%B9%A6%E5%86%99%E6%96%B9%E5%BC%8F\">8.4 条件相同时条件渲染书写方式</a></li>\n</ul>\n</li>\n<li><a href=\"#9-%E5%88%97%E8%A1%A8%E6%B8%B2%E6%9F%93\">9. 列表渲染</a>\n<ul>\n<li><a href=\"#91-%E5%9F%BA%E6%9C%AC%E5%88%97%E8%A1%A8\">9.1 基本列表</a></li>\n<li><a href=\"#92-key%E7%9A%84%E4%BD%9C%E7%94%A8\">9.2 key的作用</a>\n<ul>\n<li><a href=\"#%E6%AD%A3%E7%A1%AE%E7%9A%84key%E5%80%BC%E7%BB%91%E5%AE%9A\">正确的key值绑定</a></li>\n<li><a href=\"#key%E7%9A%84%E4%BD%9C%E7%94%A8\">key的作用</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#10-%E5%88%97%E8%A1%A8%E8%BF%87%E6%BB%A4\">10. 列表过滤</a>\n<ul>\n<li><a href=\"#101-%E6%96%B9%E5%BC%8F%E4%B8%80%E7%9B%91%E8%A7%86%E5%B1%9E%E6%80%A7\">10.1 方式一：监视属性</a></li>\n<li><a href=\"#102-%E6%96%B9%E5%BC%8F%E4%BA%8C%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7\">10.2 方式二：计算属性</a></li>\n</ul>\n</li>\n<li><a href=\"#11-%E5%88%97%E8%A1%A8%E6%8E%92%E5%BA%8F\">11. 列表排序</a></li>\n<li><a href=\"#12-vue%E7%9B%91%E6%B5%8B%E6%95%B0%E6%8D%AE%E7%9A%84%E5%8E%9F%E7%90%86\">12. Vue监测数据的原理</a></li>\n<li><a href=\"#13-%E6%94%B6%E9%9B%86%E8%A1%A8%E5%8D%95%E6%95%B0%E6%8D%AE\">13. 收集表单数据</a>\n<ul>\n<li><a href=\"#v-model%E7%9A%84%E4%B8%89%E4%B8%AA%E4%BF%AE%E9%A5%B0%E7%AC%A6\">v-model的三个修饰符</a></li>\n</ul>\n</li>\n<li><a href=\"#14-%E8%BF%87%E6%BB%A4%E5%99%A8\">14. 过滤器</a>\n<ul>\n<li><a href=\"#141-%E5%B1%80%E9%83%A8%E8%BF%87%E6%BB%A4%E5%99%A8\">14.1 局部过滤器</a></li>\n<li><a href=\"#142-%E5%85%A8%E5%B1%80%E8%BF%87%E6%BB%A4%E5%99%A8\">14.2 全局过滤器</a></li>\n</ul>\n</li>\n<li><a href=\"#15-%E5%85%B6%E4%BB%96%E5%86%85%E9%83%A8%E6%8C%87%E4%BB%A4\">15. 其他内部指令</a>\n<ul>\n<li><a href=\"#151-v-text\">15.1 v-text</a></li>\n<li><a href=\"#152-v-html\">15.2 v-html</a></li>\n<li><a href=\"#153-v-cloak\">15.3 v-cloak</a></li>\n<li><a href=\"#154-v-once\">15.4 v-once</a></li>\n<li><a href=\"#155-v-pre\">15.5 v-pre</a></li>\n</ul>\n</li>\n<li><a href=\"#16-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%87%E4%BB%A4\">16. 自定义指令</a>\n<ul>\n<li><a href=\"#161-%E5%87%BD%E6%95%B0%E5%BC%8F%E5%86%99%E6%B3%95\">16.1 函数式写法</a></li>\n<li><a href=\"#162-%E5%AF%B9%E8%B1%A1%E5%BC%8F%E5%86%99%E6%B3%95\">16.2 对象式写法</a></li>\n<li><a href=\"#163-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98\">16.3 常见问题</a></li>\n<li><a href=\"#164-%E5%85%A8%E5%B1%80%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%87%E4%BB%A4\">16.4 全局自定义指令</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F\">三、生命周期</a>\n<ul>\n<li><a href=\"#1-beforecreate\">1. beforeCreate</a></li>\n<li><a href=\"#2-created\">2. created</a></li>\n<li><a href=\"#3-beforemount\">3. beforeMount</a></li>\n<li><a href=\"#4-mounted\">4. mounted</a></li>\n<li><a href=\"#5-beforeupdate\">5. beforeUpdate</a></li>\n<li><a href=\"#6-updated\">6. updated</a></li>\n<li><a href=\"#7-beforedestory\">7. beforeDestory</a></li>\n<li><a href=\"#8-destoryed\">8. destoryed</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%9B%9B-%E7%BB%84%E4%BB%B6%E5%8C%96%E7%BC%96%E7%A8%8B\">四、组件化编程</a>\n<ul>\n<li><a href=\"#1-%E9%9D%9E%E5%8D%95%E6%96%87%E4%BB%B6%E7%BB%84%E4%BB%B6\">1. 非单文件组件</a>\n<ul>\n<li><a href=\"#11-%E5%88%9B%E5%BB%BA%E7%BB%84%E4%BB%B6\">1.1 创建组件</a></li>\n<li><a href=\"#12-%E6%B3%A8%E5%86%8C%E7%BB%84%E4%BB%B6\">1.2 注册组件</a>\n<ul>\n<li><a href=\"#%E5%B1%80%E9%83%A8%E6%B3%A8%E5%86%8C\">局部注册</a></li>\n<li><a href=\"#%E5%85%A8%E5%B1%80%E6%B3%A8%E5%86%8C\">全局注册</a></li>\n</ul>\n</li>\n<li><a href=\"#13-%E4%BD%BF%E7%94%A8%E7%BB%84%E4%BB%B6\">1.3 使用组件</a></li>\n</ul>\n</li>\n<li><a href=\"#2-vuecomponent%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0\">2. VueComponent构造函数</a></li>\n<li><a href=\"#3-%E5%8D%95%E6%96%87%E4%BB%B6%E7%BB%84%E4%BB%B6\">3. 单文件组件</a>\n<ul>\n<li><a href=\"#31-%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81\">3.1 示例代码</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%94-vuecli\">五、VueCLI</a>\n<ul>\n<li><a href=\"#1-%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C\">1. 准备工作</a>\n<ul>\n<li><a href=\"#11-%E5%AE%89%E8%A3%85nodejs\">1.1 安装NodeJS</a></li>\n<li><a href=\"#12-%E5%AE%89%E8%A3%85npm\">1.2 安装NPM</a></li>\n<li><a href=\"#13-%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BC%93%E5%AD%98%E7%9B%AE%E5%BD%95%E5%92%8C%E6%A8%A1%E5%9D%97%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95\">1.3 设置自定义缓存目录和模块下载安装目录</a></li>\n<li><a href=\"#14-%E5%AE%89%E8%A3%85vuecli\">1.4 安装VueCLI</a></li>\n<li><a href=\"#15-%E5%88%9B%E5%BB%BAvue%E9%A1%B9%E7%9B%AE\">1.5 创建Vue项目</a></li>\n<li><a href=\"#16-%E8%BF%90%E8%A1%8Cvue%E9%A1%B9%E7%9B%AE\">1.6 运行vue项目</a></li>\n</ul>\n</li>\n<li><a href=\"#2-render%E5%87%BD%E6%95%B0\">2. render函数</a>\n<ul>\n<li><a href=\"#21-%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF\">2.1 应用场景</a></li>\n<li><a href=\"#22-%E6%80%BB%E7%BB%93\">2.2 总结</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E8%A6%86%E5%86%99%E8%84%9A%E6%89%8B%E6%9E%B6%E9%85%8D%E7%BD%AE\">3. 覆写脚手架配置</a>\n<ul>\n<li><a href=\"#31-%E6%9F%A5%E7%9C%8B%E8%84%9A%E6%89%8B%E6%9E%B6%E9%85%8D%E7%BD%AE\">3.1 查看脚手架配置</a></li>\n<li><a href=\"#32-%E8%A6%86%E5%86%99%E9%85%8D%E7%BD%AE-vueconfigjs\">3.2 覆写配置 <code>vue.config.js</code></a></li>\n<li><a href=\"#33-%E5%85%B7%E4%BD%93%E9%85%8D%E7%BD%AE%E9%A1%B9\">3.3 具体配置项</a></li>\n</ul>\n</li>\n<li><a href=\"#4-ref%E5%B1%9E%E6%80%A7\">4. ref属性</a></li>\n<li><a href=\"#5-props%E9%85%8D%E7%BD%AE\">5. props配置</a>\n<ul>\n<li><a href=\"#51-props%E7%AE%80%E5%8D%95%E6%8E%A5%E6%94%B6\">5.1 props简单接收</a></li>\n<li><a href=\"#52-props%E6%8E%A5%E6%94%B6%E6%97%B6%E9%99%90%E5%AE%9A%E4%BC%A0%E5%85%A5%E7%9A%84%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B\">5.2 props接收时限定传入的数据类型</a></li>\n<li><a href=\"#53-props%E6%8E%A5%E6%94%B6%E6%97%B6%E9%99%90%E5%AE%9A%E4%BC%A0%E5%85%A5%E6%95%B0%E6%8D%AE%E7%9A%84%E5%90%84%E9%A1%B9%E5%B1%9E%E6%80%A7\">5.3 props接收时限定传入数据的各项属性</a></li>\n<li><a href=\"#54-%E4%BF%AE%E6%94%B9%E4%BC%A0%E5%85%A5%E6%95%B0%E6%8D%AE%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88\">5.4 修改传入数据的解决方案</a></li>\n</ul>\n</li>\n<li><a href=\"#6-mixin%E6%B7%B7%E5%85%A5\">6. mixin混入</a>\n<ul>\n<li><a href=\"#61-%E4%B9%A6%E5%86%99%E9%9C%80%E8%A6%81%E6%B7%B7%E5%85%A5%E7%9A%84%E5%86%85%E5%AE%B9\">6.1 书写需要混入的内容</a></li>\n<li><a href=\"#62-%E5%BC%95%E5%85%A5%E9%9C%80%E8%A6%81%E6%B7%B7%E5%85%A5%E7%9A%84%E5%86%85%E5%AE%B9\">6.2 引入需要混入的内容</a>\n<ul>\n<li><a href=\"#621-%E5%B1%80%E9%83%A8%E5%BC%95%E5%85%A5\">6.2.1 局部引入</a></li>\n<li><a href=\"#622-%E5%85%A8%E5%B1%80%E5%BC%95%E5%85%A5\">6.2.2 全局引入</a></li>\n</ul>\n</li>\n<li><a href=\"#63-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">6.3 注意事项</a></li>\n</ul>\n</li>\n<li><a href=\"#7-%E6%8F%92%E4%BB%B6\">7. 插件</a>\n<ul>\n<li><a href=\"#71-%E7%A4%BA%E4%BE%8B\">7.1 示例</a></li>\n<li><a href=\"#72-%E5%BC%95%E5%85%A5%E6%8F%92%E4%BB%B6\">7.2 引入插件</a></li>\n<li><a href=\"#73-%E8%BF%9B%E9%98%B6\">7.3 进阶</a></li>\n</ul>\n</li>\n<li><a href=\"#8-scoped%E6%A0%B7%E5%BC%8F\">8. scoped样式</a></li>\n<li><a href=\"#9-todolist%E6%A1%88%E4%BE%8B\">9. ToDoList案例</a></li>\n<li><a href=\"#10-%E6%B5%8F%E8%A7%88%E5%99%A8%E6%9C%AC%E5%9C%B0%E5%AD%98%E5%82%A8\">10. 浏览器本地存储</a>\n<ul>\n<li><a href=\"#101-localstorage\">10.1 LocalStorage</a></li>\n<li><a href=\"#102-sessionstorage\">10.2 SessionStorage</a></li>\n</ul>\n</li>\n<li><a href=\"#11-%E7%BB%84%E4%BB%B6%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6\">11. 组件自定义事件</a></li>\n<li><a href=\"#12-%E5%85%A8%E5%B1%80%E4%BA%8B%E4%BB%B6%E6%80%BB%E7%BA%BF\">12. 全局事件总线</a></li>\n<li><a href=\"#13-%E6%B6%88%E6%81%AF%E8%AE%A2%E9%98%85%E4%B8%8E%E5%8F%91%E5%B8%83-pubsub\">13. 消息订阅与发布 pubsub</a></li>\n<li><a href=\"#14-nexttick\">14. $nextTick</a></li>\n<li><a href=\"#15-%E8%BF%87%E6%B8%A1%E4%B8%8E%E5%8A%A8%E7%94%BB\">15. 过渡与动画</a>\n<ul>\n<li><a href=\"#151-%E5%8A%A8%E7%94%BB\">15.1 动画</a></li>\n<li><a href=\"#152-%E8%BF%87%E6%B8%A1\">15.2 过渡</a></li>\n<li><a href=\"#153-%E5%A4%9A%E4%B8%AA%E5%85%83%E7%B4%A0%E7%9A%84%E8%BF%87%E6%B8%A1\">15.3 多个元素的过渡</a></li>\n<li><a href=\"#154-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%8A%A8%E7%94%BB\">15.4 第三方动画</a></li>\n</ul>\n</li>\n<li><a href=\"#16-%E9%85%8D%E7%BD%AE%E4%BB%A3%E7%90%86-axios\">16. 配置代理 axios</a>\n<ul>\n<li><a href=\"#161-%E6%96%B9%E5%BC%8F%E4%B8%80\">16.1 方式一</a></li>\n<li><a href=\"#162-%E6%96%B9%E5%BC%8F%E4%BA%8C\">16.2 方式二</a></li>\n</ul>\n</li>\n<li><a href=\"#17-vue-resource\">17. vue-resource</a></li>\n<li><a href=\"#18-%E6%8F%92%E6%A7%BD\">18. 插槽</a>\n<ul>\n<li><a href=\"#181-%E9%BB%98%E8%AE%A4%E6%8F%92%E6%A7%BD\">18.1 默认插槽</a></li>\n<li><a href=\"#182-%E5%85%B7%E5%90%8D%E6%8F%92%E6%A7%BD\">18.2 具名插槽</a></li>\n<li><a href=\"#183-%E4%BD%9C%E7%94%A8%E5%9F%9F%E6%8F%92%E6%A7%BD\">18.3 作用域插槽</a></li>\n</ul>\n</li>\n<li><a href=\"#19-vuex\">19. vuex</a>\n<ul>\n<li><a href=\"#191-vuex%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%9B%BE\">19.1 vuex工作原理图</a></li>\n<li><a href=\"#192-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8\">19.2 快速入门</a></li>\n<li><a href=\"#193-getter%E9%85%8D%E7%BD%AE%E9%A1%B9\">19.3 getter配置项</a></li>\n<li><a href=\"#194-mapstate%E4%B8%8Emapgetters\">19.4 mapState与mapGetters</a></li>\n<li><a href=\"#195-mapactions%E4%B8%8Emapmutations\">19.5 mapActions与mapMutations</a></li>\n<li><a href=\"#196-%E5%A4%9A%E7%BB%84%E4%BB%B6%E5%85%B1%E4%BA%AB%E6%95%B0%E6%8D%AE\">19.6 多组件共享数据</a></li>\n<li><a href=\"#197-vuex%E7%9A%84%E6%A8%A1%E5%9D%97%E5%8C%96%E7%BC%96%E7%A0%81\">19.7 vuex的模块化编码</a></li>\n</ul>\n</li>\n<li><a href=\"#20-%E8%B7%AF%E7%94%B1\">20. 路由</a>\n<ul>\n<li><a href=\"#201-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">20.1 注意事项</a></li>\n<li><a href=\"#202-%E5%B5%8C%E5%A5%97%E8%B7%AF%E7%94%B1\">20.2 嵌套路由</a></li>\n<li><a href=\"#203-%E8%B7%AF%E7%94%B1%E7%9A%84query%E5%8F%82%E6%95%B0\">20.3 路由的query参数</a></li>\n<li><a href=\"#204-%E5%91%BD%E4%BB%A4%E8%B7%AF%E7%94%B1\">20.4 命令路由</a></li>\n<li><a href=\"#204-%E8%B7%AF%E7%94%B1%E7%9A%84params%E5%8F%82%E6%95%B0\">20.4 路由的params参数</a></li>\n<li><a href=\"#205-%E8%B7%AF%E7%94%B1%E7%9A%84props%E9%85%8D%E7%BD%AE\">20.5 路由的props配置</a></li>\n<li><a href=\"#206-router-link%E7%9A%84replace%E5%B1%9E%E6%80%A7\">20.6 router-link的replace属性</a></li>\n<li><a href=\"#207-%E7%BC%96%E7%A8%8B%E5%BC%8F%E8%B7%AF%E7%94%B1%E5%AF%BC%E8%88%AA\">20.7 编程式路由导航</a></li>\n<li><a href=\"#208-%E7%BC%93%E5%AD%98%E8%B7%AF%E7%94%B1%E7%BB%84%E4%BB%B6\">20.8 缓存路由组件</a></li>\n<li><a href=\"#209-%E4%B8%A4%E4%B8%AA%E6%96%B0%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90\">20.9 两个新的生命周期钩子</a></li>\n<li><a href=\"#2010-%E8%B7%AF%E7%94%B1%E5%AE%88%E5%8D%AB\">20.10 路由守卫</a></li>\n<li><a href=\"#2011-history%E6%A8%A1%E5%BC%8F%E4%B8%8Ehash%E6%A8%A1%E5%BC%8F\">20.11 history模式与hash模式</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%85%AD-element-ui\">六、Element-UI</a></li>\n<li><a href=\"#%E4%B8%83-vue3\">七、Vue3</a>\n<ul>\n<li><a href=\"#1-%E4%BD%BF%E7%94%A8-vue-cli-%E5%88%9B%E5%BB%BA%E5%B7%A5%E7%A8%8B\">1. 使用 vue-cli 创建工程</a></li>\n<li><a href=\"#2-%E4%BD%BF%E7%94%A8vite%E5%88%9B%E5%BB%BA%E5%B7%A5%E7%A8%8B\">2. 使用vite创建工程</a></li>\n<li><a href=\"#3-%E5%88%86%E6%9E%90%E5%B7%A5%E7%A8%8B%E7%BB%93%E6%9E%84\">3. 分析工程结构</a>\n<ul>\n<li><a href=\"#31-%E5%88%86%E6%9E%90%E5%85%A5%E5%8F%A3%E6%96%87%E4%BB%B6mainjs\">3.1 分析入口文件main.js</a></li>\n<li><a href=\"#32-%E5%88%86%E6%9E%90appvue\">3.2 分析App.vue</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E5%AE%89%E8%A3%85%E5%BC%80%E5%8F%91%E8%80%85%E5%B7%A5%E5%85%B7\">4. 安装开发者工具</a></li>\n<li><a href=\"#5-%E5%88%9D%E8%AF%86setup\">5. 初识setup</a></li>\n<li><a href=\"#6-ref%E5%87%BD%E6%95%B0\">6. ref函数</a></li>\n<li><a href=\"#7-reactive%E5%87%BD%E6%95%B0\">7. reactive函数</a></li>\n<li><a href=\"#8-vue3%E5%93%8D%E5%BA%94%E5%BC%8F%E5%8E%9F%E7%90%86\">8. vue3响应式原理</a>\n<ul>\n<li><a href=\"#81-vue2%E5%93%8D%E5%BA%94%E5%BC%8F%E5%8E%9F%E7%90%86\">8.1 vue2响应式原理</a></li>\n<li><a href=\"#82-vue3%E5%93%8D%E5%BA%94%E5%BC%8F%E5%8E%9F%E7%90%86\">8.2 vue3响应式原理</a></li>\n</ul>\n</li>\n<li><a href=\"#9-reactive%E4%B8%8Eref%E5%AF%B9%E6%AF%94\">9. reactive与ref对比</a></li>\n<li><a href=\"#10-setup%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%B3%A8%E6%84%8F%E7%82%B9\">10. setup的两个注意点</a></li>\n<li><a href=\"#11-computed%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7\">11. computed计算属性</a></li>\n<li><a href=\"#12-watch%E7%9B%91%E8%A7%86%E5%B1%9E%E6%80%A7\">12. watch监视属性</a></li>\n<li><a href=\"#13-vue3%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F\">13. Vue3生命周期</a></li>\n<li><a href=\"#14-%E8%87%AA%E5%AE%9A%E4%B9%89hook\">14. 自定义hook</a></li>\n<li><a href=\"#15-toref%E4%B8%8Etorefs\">15. toRef与toRefs</a></li>\n<li><a href=\"#16-compositionapi\">16. CompositionAPI</a>\n<ul>\n<li><a href=\"#161-shallowreactive%E4%B8%8Eshallowref\">16.1 shallowReactive与shallowRef</a></li>\n<li><a href=\"#162-readonly%E4%B8%8Eshallowreadonly\">16.2 readonly与shallowReadonly</a></li>\n<li><a href=\"#163-toraw%E4%B8%8Emarkraw\">16.3 toRaw与markRaw</a></li>\n<li><a href=\"#164-customref\">16.4 customRef</a></li>\n<li><a href=\"#165-provide%E4%B8%8Einject\">16.5  provide与inject</a></li>\n<li><a href=\"#166-%E5%93%8D%E5%BA%94%E5%BC%8F%E6%95%B0%E6%8D%AE%E7%9A%84%E5%88%A4%E6%96%AD\">16.6 响应式数据的判断</a></li>\n</ul>\n</li>\n<li><a href=\"#17-compositionapi%E4%BC%98%E5%8A%BF\">17. CompositionAPI优势</a>\n<ul>\n<li><a href=\"#171-optionapi\">17.1 OptionAPI</a></li>\n<li><a href=\"#172-compositionapi\">17.2 CompositionAPI</a></li>\n</ul>\n</li>\n<li><a href=\"#18-fragment%E7%BB%84%E4%BB%B6\">18. Fragment组件</a></li>\n<li><a href=\"#19-teleport%E7%BB%84%E4%BB%B6\">19. Teleport组件</a></li>\n<li><a href=\"#20-suspense%E7%BB%84%E4%BB%B6\">20. Suspense组件</a></li>\n<li><a href=\"#21-%E6%94%B6%E5%B0%BE\">21. 收尾</a>\n<ul>\n<li><a href=\"#211-%E5%85%A8%E5%B1%80api%E7%9A%84%E8%BD%AC%E7%A7%BB\">21.1 全局API的转移</a></li>\n<li><a href=\"#212-%E5%85%B6%E4%BB%96%E6%94%B9%E5%8F%98\">21.2 其他改变</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2023-01-26 21:01:38","dateFormat":"2023-01-26"},{"fileName":"DZ1f24lyN","abstract":"","description":"微服务 微服务就是一种经过良好架构设计的分布式架构方案，微服务架构的特征： 单一职责：微服务拆分力度更大，每一个服务都对应唯一的业务能力，做到单一职责，避免重复的业务开发 面向服务：微服务只对外暴露业务接口 自治：团队独立、技术独立、数...","title":"微服务学习","tags":[{"index":-1,"name":"微服务","slug":"ioMcFDQ77","used":true,"link":"https://zydnc.gitee.io/ioMcFDQ77/"},{"index":-1,"name":"SpringCloud","slug":"springcloud","used":true,"link":"https://zydnc.gitee.io/springcloud/"},{"name":"SpringCloudAlibaba","slug":"p0lsHeUez","used":true,"link":"https://zydnc.gitee.io/p0lsHeUez/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E5%BE%AE%E6%9C%8D%E5%8A%A1.png","link":"https://zydnc.gitee.io/DZ1f24lyN/","stats":{"text":"82 min read","time":4887000,"words":17612,"minutes":82},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li><a href=\"#%E5%BE%AE%E6%9C%8D%E5%8A%A1\">微服务</a>\n<ul>\n<li><a href=\"#%E4%B8%80-%E8%AE%A4%E8%AF%86%E5%BE%AE%E6%9C%8D%E5%8A%A1\">一、认识微服务</a>\n<ul>\n<li><a href=\"#1-%E5%87%A0%E7%A7%8D%E6%8A%80%E6%9C%AF%E7%9A%84%E6%AF%94%E8%BE%83\">1. 几种技术的比较</a></li>\n<li><a href=\"#2-springcloud\">2. SpringCloud</a></li>\n<li><a href=\"#3-%E6%9C%8D%E5%8A%A1%E6%8B%86%E5%88%86%E5%8F%8A%E8%BF%9C%E7%A8%8B%E8%B0%83%E7%94%A8\">3. 服务拆分及远程调用</a>\n<ul>\n<li><a href=\"#31-%E6%9C%8D%E5%8A%A1%E6%8B%86%E5%88%86%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">3.1 服务拆分注意事项</a></li>\n<li><a href=\"#32-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E7%9A%84%E8%BF%9C%E7%A8%8B%E8%B0%83%E7%94%A8\">3.2 微服务的远程调用</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E6%8F%90%E4%BE%9B%E8%80%85%E4%B8%8E%E6%B6%88%E8%B4%B9%E8%80%85\">4. 提供者与消费者</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-eureka%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83\">二、Eureka注册中心</a>\n<ul>\n<li><a href=\"#1-%E6%90%AD%E5%BB%BAeurekaserver\">1. 搭建EurekaServer</a>\n<ul>\n<li><a href=\"#%E6%90%AD%E5%BB%BAeurekaserver%E6%9C%8D%E5%8A%A1%E6%AD%A5%E9%AA%A4%E5%A6%82%E4%B8%8B\">搭建EurekaServer服务步骤如下：</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E6%B3%A8%E5%86%8C%E5%BE%AE%E6%9C%8D%E5%8A%A1\">2. 注册微服务</a>\n<ul>\n<li><a href=\"#%E6%AD%A5%E9%AA%A4%E5%A6%82%E4%B8%8B\">步骤如下：</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0\">3. 服务发现</a>\n<ul>\n<li><a href=\"#%E5%9C%A8order-service%E4%B8%AD%E5%AE%8C%E6%88%90%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0\">在order-service中完成服务发现</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-ribbon%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1\">三、Ribbon负载均衡</a>\n<ul>\n<li><a href=\"#1-%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E7%9A%84%E6%B5%81%E7%A8%8B\">1. 负载均衡的流程</a></li>\n<li><a href=\"#2-irule%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E7%9A%84%E7%AD%96%E7%95%A5\">2. IRule负载均衡的策略</a></li>\n<li><a href=\"#3-%E4%BF%AE%E6%94%B9%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E8%A7%84%E5%88%99%E7%9A%84%E6%96%B9%E5%BC%8F\">3. 修改负载均衡规则的方式</a>\n<ul>\n<li><a href=\"#31-%E4%BB%A3%E7%A0%81%E6%96%B9%E5%BC%8F\">3.1 代码方式</a></li>\n<li><a href=\"#32-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%96%B9%E5%BC%8F\">3.2 配置文件方式</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E9%A5%A5%E9%A5%BF%E5%8A%A0%E8%BD%BD\">4. 饥饿加载</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%9B%9B-nacos%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83\">四、Nacos注册中心</a>\n<ul>\n<li><a href=\"#github-httpsgithubcomalibabanacos\">GitHub： https://github.com/alibaba/nacos</a></li>\n<li><a href=\"#%E7%89%88%E6%9C%AC%E5%AF%B9%E5%BA%94%E8%AF%B4%E6%98%8E%E5%9C%B0%E5%9D%80\">版本对应说明：地址</a></li>\n<li><a href=\"#1-nacos%E6%90%AD%E5%BB%BA\">1. Nacos搭建</a>\n<ul>\n<li><a href=\"#%E6%AD%A5%E9%AA%A4%E5%A6%82%E4%B8%8B-2\">步骤如下：</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E6%B3%A8%E5%86%8C%E5%BE%AE%E6%9C%8D%E5%8A%A1-2\">2. 注册微服务</a></li>\n<li><a href=\"#3-nacos%E6%9C%8D%E5%8A%A1%E5%A4%9A%E7%BA%A7%E5%AD%98%E5%82%A8%E6%A8%A1%E5%9E%8B\">3. Nacos服务多级存储模型</a>\n<ul>\n<li><a href=\"#31-%E6%9C%8D%E5%8A%A1%E9%9B%86%E7%BE%A4%E5%B1%9E%E6%80%A7\">3.1 服务集群属性</a></li>\n<li><a href=\"#32-%E7%8E%AF%E5%A2%83%E9%9A%94%E7%A6%BB-namespace\">3.2 环境隔离 namespace</a></li>\n<li><a href=\"#%E5%AE%9E%E4%BE%8B\">实例</a></li>\n</ul>\n</li>\n<li><a href=\"#4-nacos%E5%92%8Ceureka%E7%9A%84%E5%8C%BA%E5%88%AB\">4. Nacos和Eureka的区别</a>\n<ul>\n<li><a href=\"#41-%E4%B8%B4%E6%97%B6%E5%AE%9E%E4%BE%8B%E5%92%8C%E9%9D%9E%E4%B8%B4%E6%97%B6%E5%AE%9E%E4%BE%8B\">4.1 临时实例和非临时实例</a></li>\n<li><a href=\"#42-%E5%8C%BA%E5%88%AB%E4%B8%8E%E8%81%94%E7%B3%BB\">4.2 区别与联系</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%94-nacos%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86\">五、 Nacos配置管理</a>\n<ul>\n<li><a href=\"#1-%E7%BB%9F%E4%B8%80%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86\">1. 统一配置管理</a>\n<ul>\n<li><a href=\"#11-%E5%9C%A8%E6%8C%87%E5%AE%9A%E6%9C%8D%E5%8A%A1%E7%9A%84pom%E4%B8%AD%E5%BC%95%E5%85%A5nacos%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BE%9D%E8%B5%96\">1.1 在指定服务的pom中引入Nacos配置管理客户端依赖</a></li>\n<li><a href=\"#12-%E5%9C%A8%E6%8C%87%E5%AE%9A%E6%9C%8D%E5%8A%A1%E7%9A%84resources%E7%9B%AE%E5%BD%95%E4%B8%8B%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%B8%AAbootstrapyml%E6%96%87%E4%BB%B6%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E5%BC%95%E5%AF%BC%E6%96%87%E4%BB%B6%E4%BC%98%E5%85%88%E7%BA%A7%E9%AB%98%E4%BA%8Eapplicationyml\">1.2 在指定服务的resources目录下添加一个<code>bootstrap.yml</code>文件，这是一个引导文件，优先级高于<code>application.yml</code></a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E9%85%8D%E7%BD%AE%E7%83%AD%E6%9B%B4%E6%96%B0\">2. 配置热更新</a>\n<ul>\n<li><a href=\"#21-%E6%96%B9%E5%BC%8F%E4%B8%80\">2.1 方式一</a></li>\n<li><a href=\"#22-%E6%96%B9%E5%BC%8F%E4%BA%8C\">2.2 方式二</a></li>\n<li><a href=\"#23-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">2.3 注意事项</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E5%A4%9A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E5%85%B1%E4%BA%AB\">3. 多环境配置共享</a>\n<ul>\n<li><a href=\"#31-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">3.1 注意事项</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E6%90%AD%E5%BB%BAnacos%E9%9B%86%E7%BE%A4\">4. 搭建Nacos集群</a>\n<ul>\n<li><a href=\"#41-%E5%88%9B%E5%BB%BA%E9%9B%86%E7%BE%A4%E6%95%B0%E6%8D%AE%E5%BA%93\">4.1 创建集群数据库</a></li>\n<li><a href=\"#42-%E5%88%9B%E5%BB%BA%E9%9B%86%E7%BE%A4%E6%95%B0%E6%8D%AE%E8%A1%A8\">4.2 创建集群数据表</a></li>\n<li><a href=\"#43-%E5%90%91%E8%A1%A8%E4%B8%AD%E6%8F%92%E5%85%A5%E6%95%B0%E6%8D%AE\">4.3 向表中插入数据</a></li>\n<li><a href=\"#44-%E9%85%8D%E7%BD%AEnacos\">4.4 配置Nacos</a>\n<ul>\n<li><a href=\"#1-%E6%89%93%E5%BC%80-nacos%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95conf\">1. 打开 <code>\\Nacos安装目录\\conf\\</code></a></li>\n<li><a href=\"#2-%E5%A4%8D%E5%88%B6nacos%E6%96%87%E4%BB%B6%E5%A4%B9%E5%B9%B6%E5%88%86%E5%88%AB%E4%BF%AE%E6%94%B9%E4%B8%BAnacos1nacos2nacos3\">2. 复制Nacos文件夹并分别修改为Nacos1，Nacos2，Nacos3</a></li>\n</ul>\n</li>\n<li><a href=\"#45-nginx%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86\">4.5 Nginx反向代理</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%85%AD-%E5%9F%BA%E4%BA%8Efeign%E7%9A%84%E8%BF%9C%E7%A8%8B%E8%B0%83%E7%94%A8\">六、 基于Feign的远程调用</a>\n<ul>\n<li><a href=\"#1-%E6%B7%BB%E5%8A%A0%E4%BE%9D%E8%B5%96\">1. 添加依赖</a></li>\n<li><a href=\"#2-%E4%BB%A3%E7%A0%81%E4%B9%A6%E5%86%99\">2. 代码书写</a></li>\n<li><a href=\"#3-feign%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E9%85%8D%E7%BD%AE\">3. Feign的自定义配置</a>\n<ul>\n<li><a href=\"#31-%E6%97%A5%E5%BF%97%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F\">3.1 日志配置方式</a></li>\n</ul>\n</li>\n<li><a href=\"#3-feign%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96\">3. Feign性能优化</a>\n<ul>\n<li><a href=\"#31-feign%E5%BA%95%E5%B1%82%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%9A%84%E5%AE%9E%E7%8E%B0\">3.1 Feign底层客户端的实现</a></li>\n<li><a href=\"#32-%E4%B8%BAfeign%E6%B7%BB%E5%8A%A0httpclient%E6%94%AF%E6%8C%81\">3.2 为Feign添加HttpClient支持</a></li>\n</ul>\n</li>\n<li><a href=\"#4-feign%E7%9A%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5\">4. Feign的最佳实践</a>\n<ul>\n<li><a href=\"#41-%E6%96%B9%E5%BC%8F%E4%B8%80%E7%BB%A7%E6%89%BF\">4.1 方式一(继承)</a></li>\n<li><a href=\"#42-%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%8A%BD%E5%8F%96\">4.2 方式二（抽取）</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%83-%E7%BB%9F%E4%B8%80%E7%BD%91%E5%85%B3gateway\">七、统一网关Gateway</a>\n<ul>\n<li><a href=\"#1-%E7%BD%91%E5%85%B3%E7%9A%84%E5%8A%9F%E8%83%BD\">1. 网关的功能</a>\n<ul>\n<li><a href=\"#11-%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81%E5%92%8C%E6%9D%83%E9%99%90%E6%A0%A1%E9%AA%8C\">1.1 身份认证和权限校验</a></li>\n<li><a href=\"#12-%E6%9C%8D%E5%8A%A1%E8%B7%AF%E7%94%B1-%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1\">1.2 服务路由、负载均衡</a></li>\n<li><a href=\"#13-%E8%AF%B7%E6%B1%82%E9%99%90%E6%B5%81\">1.3 请求限流</a></li>\n</ul>\n</li>\n<li><a href=\"#2-springcloud%E4%B8%AD%E7%BD%91%E5%85%B3%E7%9A%84%E5%AE%9E%E7%8E%B0\">2. SpringCloud中网关的实现</a>\n<ul>\n<li><a href=\"#21-gateway\">2.1 Gateway</a></li>\n<li><a href=\"#22-zuul\">2.2 zuul</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E6%90%AD%E5%BB%BA%E7%BD%91%E5%85%B3\">3. 搭建网关</a>\n<ul>\n<li><a href=\"#31-%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9A%84module%E5%BC%95%E5%85%A5springcloudgateway%E7%9A%84%E4%BE%9D%E8%B5%96%E5%92%8Cnacos%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E4%BE%9D%E8%B5%96\">3.1 创建新的module，引入SpringCloudGateway的依赖和nacos的服务发现依赖</a></li>\n<li><a href=\"#32-%E7%BC%96%E5%86%99%E8%B7%AF%E7%94%B1%E9%85%8D%E7%BD%AE%E5%8F%8Anacos%E5%9C%B0%E5%9D%80\">3.2 编写路由配置及nacos地址</a></li>\n<li><a href=\"#33-%E8%B7%AF%E7%94%B1%E6%96%AD%E8%A8%80%E5%B7%A5%E5%8E%82route-predicate-factory\">3.3 路由断言工厂Route Predicate Factory</a></li>\n<li><a href=\"#34-%E8%B7%AF%E7%94%B1%E8%BF%87%E6%BB%A4%E5%99%A8gatewayfilter\">3.4 路由过滤器GatewayFilter</a>\n<ul>\n<li><a href=\"#%E5%B1%80%E9%83%A8%E8%BF%87%E6%BB%A4%E5%99%A8\">局部过滤器</a></li>\n<li><a href=\"#%E5%85%A8%E5%B1%80%E8%BF%87%E6%BB%A4%E5%99%A8\">全局过滤器</a></li>\n<li><a href=\"#%E5%B1%80%E9%83%A8%E8%BF%87%E6%BB%A4%E5%99%A8-2\">局部过滤器</a></li>\n<li><a href=\"#%E5%85%A8%E5%B1%80%E8%BF%87%E6%BB%A4%E5%99%A8-2\">全局过滤器</a></li>\n</ul>\n</li>\n<li><a href=\"#35-%E7%BD%91%E5%85%B3%E7%9A%84%E8%B7%A8%E5%9F%9F%E8%AF%B7%E6%B1%82%E9%85%8D%E7%BD%AE\">3.5 网关的跨域请求配置</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%85%AB-%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2docker\">八、容器化部署Docker</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E5%BF%B5\">1. 概念</a>\n<ul>\n<li><a href=\"#11-%E9%95%9C%E5%83%8Fimage\">1.1 镜像（Image）</a></li>\n<li><a href=\"#12-%E5%AE%B9%E5%99%A8container\">1.2 容器（Container）</a></li>\n<li><a href=\"#13-dockerhub\">1.3 DockerHub</a></li>\n<li><a href=\"#14-docker\">1.4 Docker</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E5%AE%89%E8%A3%85docker\">2. 安装Docker</a>\n<ul>\n<li><a href=\"#21-centos7%E5%AE%89%E8%A3%85docker\">2.1 CentOS7安装Docker</a>\n<ul>\n<li><a href=\"#%E8%8B%A5%E4%B9%8B%E5%89%8D%E5%AE%89%E8%A3%85%E8%BF%87%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%ACdocker%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E6%96%B9%E5%BC%8F%E5%AE%8C%E6%88%90%E5%8D%B8%E8%BD%BD\">若之前安装过其他版本Docker，通过以下方式完成卸载：</a></li>\n<li><a href=\"#%E5%AE%89%E8%A3%85docker\">安装Docker</a></li>\n</ul>\n</li>\n<li><a href=\"#22-docker%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C\">2.2 Docker基本操作</a>\n<ul>\n<li><a href=\"#%E9%95%9C%E5%83%8F%E7%9B%B8%E5%85%B3%E6%8C%87%E4%BB%A4\">镜像相关指令</a></li>\n<li><a href=\"#%E5%AE%B9%E5%99%A8%E7%9B%B8%E5%85%B3%E5%91%BD%E4%BB%A4\">容器相关命令</a></li>\n</ul>\n</li>\n<li><a href=\"#23-%E6%95%B0%E6%8D%AE%E5%8D%B7%E6%93%8D%E4%BD%9C\">2.3 数据卷操作</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E9%95%9C%E5%83%8F%E7%BB%93%E6%9E%84\">3. 镜像结构</a>\n<ul>\n<li><a href=\"#31-%E8%87%AA%E5%AE%9A%E4%B9%89%E9%95%9C%E5%83%8F\">3.1 自定义镜像</a></li>\n<li><a href=\"#32-dockercompose\">3.2 DockerCompose</a>\n<ul>\n<li><a href=\"#321-%E5%AE%89%E8%A3%85dockercompose\">3.2.1 安装DockerCompose</a></li>\n<li><a href=\"#322-%E9%83%A8%E7%BD%B2%E5%BE%AE%E6%9C%8D%E5%8A%A1%E9%9B%86%E7%BE%A4\">3.2.2 部署微服务集群</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#4-docker%E9%95%9C%E5%83%8F%E4%BB%93%E5%BA%93\">4. Docker镜像仓库</a>\n<ul>\n<li><a href=\"#41-%E9%85%8D%E7%BD%AEdocker%E4%BF%A1%E4%BB%BB%E5%9C%B0%E5%9D%80\">4.1 配置Docker信任地址</a></li>\n<li><a href=\"#42-%E4%BD%BF%E7%94%A8docker%E9%83%A8%E7%BD%B2%E5%B8%A6%E6%9C%89%E5%9B%BE%E5%BD%A2%E7%95%8C%E9%9D%A2%E7%9A%84dockerregistry\">4.2 使用Docker部署带有图形界面的DockerRegistry</a></li>\n<li><a href=\"#43-%E5%9C%A8%E7%A7%81%E6%9C%89%E9%95%9C%E5%83%8F%E4%BB%93%E5%BA%93%E6%8E%A8%E9%80%81%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F\">4.3 在私有镜像仓库推送/拉取镜像</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%B9%9D-%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97rabbitmq\">九、消息队列RabbitMQ</a>\n<ul>\n<li><a href=\"#1-mqmessagequeue\">1. MQ（MessageQueue）</a></li>\n<li><a href=\"#2-rabbitmq%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8\">2. RabbitMQ快速入门</a>\n<ul>\n<li><a href=\"#21-%E5%AE%89%E8%A3%85rabbitmq\">2.1 安装RabbitMQ</a>\n<ul>\n<li><a href=\"#211-%E4%B8%8B%E8%BD%BD%E9%95%9C%E5%83%8F\">2.1.1 下载镜像</a></li>\n<li><a href=\"#212-%E5%AE%89%E8%A3%85mq\">2.1.2 安装MQ</a></li>\n</ul>\n</li>\n<li><a href=\"#22-%E6%A6%82%E5%BF%B5%E8%A7%A3%E6%9E%90\">2.2 概念解析</a></li>\n<li><a href=\"#23-%E5%B8%B8%E8%A7%81%E6%B6%88%E6%81%AF%E6%A8%A1%E5%9E%8B\">2.3 常见消息模型</a>\n<ul>\n<li><a href=\"#231-%E5%9F%BA%E6%9C%AC%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97basicqueue\">2.3.1 基本消息队列（BasicQueue）</a></li>\n<li><a href=\"#232-%E5%B7%A5%E4%BD%9C%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97work-queue\">2.3.2 工作消息队列（Work Queue）</a></li>\n<li><a href=\"#233-%E5%8F%91%E5%B8%83%E8%AE%A2%E9%98%85publish-subscribe\">2.3.3 发布订阅（Publish Subscribe）</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#3-springamqp\">3. SpringAMQP</a>\n<ul>\n<li><a href=\"#31-%E5%85%A5%E9%97%A8%E6%A1%88%E4%BE%8B%E6%B6%88%E6%81%AF%E7%9A%84%E5%8F%91%E9%80%81\">3.1 入门案例：消息的发送</a></li>\n<li><a href=\"#32-%E5%85%A5%E9%97%A8%E6%A1%88%E4%BE%8B%E6%B6%88%E6%81%AF%E7%9A%84%E6%8E%A5%E6%94%B6\">3.2 入门案例：消息的接收</a></li>\n<li><a href=\"#33-%E5%B7%A5%E4%BD%9C%E9%98%9F%E5%88%97%E6%A1%88%E4%BE%8B\">3.3 工作队列案例</a></li>\n<li><a href=\"#34-%E5%8F%91%E5%B8%83%E8%AE%A2%E9%98%85%E6%A1%88%E4%BE%8B\">3.4 发布订阅案例</a>\n<ul>\n<li><a href=\"#341-fanout-exchange%E5%B0%86%E6%8E%A5%E5%8F%97%E5%88%B0%E7%9A%84%E6%B6%88%E6%81%AF%E8%B7%AF%E7%94%B1%E5%88%B0%E6%AF%8F%E4%B8%80%E4%B8%AA%E4%B8%8E%E5%85%B6%E7%BB%91%E5%AE%9A%E7%9A%84queue\">3.4.1 Fanout Exchange：将接受到的消息路由到每一个与其绑定的queue</a></li>\n<li><a href=\"#342-direct-exchange%E5%B0%86%E6%8E%A5%E5%8F%97%E5%88%B0%E7%9A%84%E6%B6%88%E6%81%AF%E6%A0%B9%E6%8D%AE%E8%A7%84%E5%88%99%E8%B7%AF%E7%94%B1%E5%88%B0%E6%8C%87%E5%AE%9A%E7%9A%84queue\">3.4.2 Direct Exchange：将接受到的消息根据规则路由到指定的queue</a></li>\n<li><a href=\"#343-topicexchange%E4%B8%8Edirectexchange%E7%B1%BB%E4%BC%BC%E5%8C%BA%E5%88%AB%E5%9C%A8%E4%BA%8Eroutingkey%E5%BF%85%E9%A1%BB%E6%98%AF%E5%A4%9A%E4%B8%AA%E5%8D%95%E8%AF%8D%E5%88%97%E8%A1%A8%E5%B9%B6%E4%B8%94%E4%BB%A5%E5%88%86%E5%89%B2\">3.4.3 TopicExchange：与DirectExchange类似，区别在于routingKey必须是多个单词列表，并且以<code>.</code>分割</a></li>\n</ul>\n</li>\n<li><a href=\"#4springamqp%E6%B6%88%E6%81%AF%E8%BD%AC%E6%8D%A2%E5%99%A8\">4.SpringAMQP消息转换器</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%8D%81-%E5%88%86%E5%B8%83%E5%BC%8F%E6%90%9C%E7%B4%A2elasticsearch\">十、分布式搜索Elasticsearch</a>\n<ul>\n<li><a href=\"#1-%E5%88%9D%E8%AF%86elasticsearch\">1. 初识elasticsearch</a>\n<ul>\n<li><a href=\"#11-%E6%AD%A3%E5%90%91%E7%B4%A2%E5%BC%95%E5%92%8C%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95\">1.1. 正向索引和倒排索引</a></li>\n<li><a href=\"#12-%E6%96%87%E6%A1%A3\">1.2 文档</a></li>\n<li><a href=\"#13-%E7%B4%A2%E5%BC%95\">1.3 索引</a></li>\n<li><a href=\"#14-%E6%A6%82%E5%BF%B5%E5%AF%B9%E6%AF%94\">1.4 概念对比</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E5%AE%89%E8%A3%85elasticsearch\">2. 安装Elasticsearch</a>\n<ul>\n<li><a href=\"#21-%E5%88%9B%E5%BB%BA%E7%BD%91%E7%BB%9C\">2.1 创建网络</a></li>\n<li><a href=\"#22-%E5%8A%A0%E8%BD%BD%E9%95%9C%E5%83%8F\">2.2 加载镜像</a></li>\n<li><a href=\"#23-%E8%BF%90%E8%A1%8C\">2.3 运行</a></li>\n<li><a href=\"#24-%E9%83%A8%E7%BD%B2kibana\">2.4 部署kibana</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E5%88%86%E8%AF%8D%E5%99%A8\">3. 分词器</a>\n<ul>\n<li><a href=\"#31-%E5%AE%89%E8%A3%85%E5%88%86%E8%AF%8D%E5%99%A8\">3.1 安装分词器</a></li>\n<li><a href=\"#32-ik%E5%88%86%E8%AF%8D%E5%99%A8\">3.2 IK分词器</a></li>\n<li><a href=\"#33-ik%E5%88%86%E8%AF%8D%E5%99%A8%E7%9A%84%E6%8B%93%E5%B1%95%E5%92%8C%E5%81%9C%E7%94%A8%E5%AD%97%E5%85%B8\">3.3 IK分词器的拓展和停用字典</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E7%B4%A2%E5%BC%95%E5%BA%93%E6%93%8D%E4%BD%9C\">4. 索引库操作</a>\n<ul>\n<li><a href=\"#41-mapping%E5%B1%9E%E6%80%A7\">4.1 mapping属性</a></li>\n<li><a href=\"#42-%E5%88%9B%E5%BB%BA%E7%B4%A2%E5%BC%95%E5%BA%93\">4.2 创建索引库</a></li>\n<li><a href=\"#43-%E6%9F%A5%E7%9C%8B-%E5%88%A0%E9%99%A4%E7%B4%A2%E5%BC%95%E5%BA%93\">4.3 查看、删除索引库</a></li>\n<li><a href=\"#44-%E4%BF%AE%E6%94%B9%E7%B4%A2%E5%BC%95%E5%BA%93\">4.4 修改索引库</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E6%96%87%E6%A1%A3%E6%93%8D%E4%BD%9C\">5. 文档操作</a>\n<ul>\n<li><a href=\"#51-%E6%96%B0%E5%A2%9E%E6%96%87%E6%A1%A3\">5.1 新增文档</a></li>\n<li><a href=\"#52-%E6%9F%A5%E8%AF%A2%E6%96%87%E6%A1%A3\">5.2 查询文档</a></li>\n<li><a href=\"#53-%E5%88%A0%E9%99%A4%E6%96%87%E6%A1%A3\">5.3 删除文档</a></li>\n<li><a href=\"#54-%E4%BF%AE%E6%94%B9%E6%96%87%E6%A1%A3\">5.4 修改文档</a>\n<ul>\n<li><a href=\"#541-%E5%85%A8%E9%87%8F%E4%BF%AE%E6%94%B9\">5.4.1 全量修改</a></li>\n<li><a href=\"#542-%E5%A2%9E%E9%87%8F%E4%BF%AE%E6%94%B9\">5.4.2 增量修改</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#6-restclient\">6. RestClient</a>\n<ul>\n<li><a href=\"#61-%E5%88%9D%E5%A7%8B%E5%8C%96-javarestclient\">6.1 初始化 JavaRestClient</a></li>\n<li><a href=\"#62-restclient%E5%AE%9E%E7%8E%B0%E7%B4%A2%E5%BC%95%E5%BA%93%E7%9A%84crud\">6.2 RestClient实现索引库的CRUD</a>\n<ul>\n<li><a href=\"#621-%E5%88%9B%E5%BB%BA%E7%B4%A2%E5%BC%95%E5%BA%93\">6.2.1 创建索引库</a></li>\n<li><a href=\"#622-%E5%88%A0%E9%99%A4%E7%B4%A2%E5%BC%95%E5%BA%93\">6.2.2 删除索引库</a></li>\n<li><a href=\"#623-%E5%88%A4%E6%96%AD%E7%B4%A2%E5%BC%95%E5%BA%93%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8\">6.2.3 判断索引库是否存在</a></li>\n<li><a href=\"#624-%E6%9F%A5%E8%AF%A2%E7%B4%A2%E5%BC%95%E5%BA%93\">6.2.4 查询索引库</a></li>\n</ul>\n</li>\n<li><a href=\"#63-restclient%E5%AE%9E%E7%8E%B0%E6%96%87%E6%A1%A3%E7%9A%84crud\">6.3 RestClient实现文档的CRUD</a>\n<ul>\n<li><a href=\"#631-%E5%88%9B%E5%BB%BA%E6%96%87%E6%A1%A3\">6.3.1 创建文档</a></li>\n<li><a href=\"#632-%E6%9F%A5%E8%AF%A2%E6%96%87%E6%A1%A3\">6.3.2 查询文档</a></li>\n<li><a href=\"#633-%E5%88%A0%E9%99%A4%E6%96%87%E6%A1%A3\">6.3.3 删除文档</a></li>\n<li><a href=\"#634-%E4%BF%AE%E6%94%B9%E6%96%87%E6%A1%A3\">6.3.4 修改文档</a></li>\n<li><a href=\"#635-%E6%89%B9%E9%87%8F%E6%96%B0%E5%A2%9E%E6%96%87%E6%A1%A3\">6.3.5 批量新增文档</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#7-dsl%E8%AF%AD%E6%B3%95\">7. DSL语法</a>\n<ul>\n<li><a href=\"#71-%E6%9F%A5%E8%AF%A2%E6%89%80%E6%9C%89\">7.1 查询所有</a></li>\n<li><a href=\"#72-%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2\">7.2 全文检索</a></li>\n<li><a href=\"#73-%E7%B2%BE%E7%A1%AE%E6%9F%A5%E8%AF%A2\">7.3 精确查询</a></li>\n<li><a href=\"#74-%E5%9C%B0%E7%90%86%E6%9F%A5%E8%AF%A2\">7.4 地理查询</a></li>\n<li><a href=\"#75-%E5%A4%8D%E5%90%88%E6%9F%A5%E8%AF%A2\">7.5 复合查询</a>\n<ul>\n<li><a href=\"#751-%E7%9B%B8%E5%85%B3%E6%80%A7%E7%AE%97%E5%88%86%E6%9F%A5%E8%AF%A2\">7.5.1 相关性算分查询</a></li>\n<li><a href=\"#752-%E5%B8%83%E5%B0%94%E6%9F%A5%E8%AF%A2\">7.5.2 布尔查询</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#8-%E6%8E%92%E5%BA%8F\">8. 排序</a></li>\n<li><a href=\"#9-%E5%88%86%E9%A1%B5\">9. 分页</a>\n<ul>\n<li><a href=\"#%E6%B7%B1%E5%BA%A6%E5%88%86%E9%A1%B5%E9%97%AE%E9%A2%98\">深度分页问题</a>\n<ul>\n<li><a href=\"#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88\">解决方案</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#10-%E9%AB%98%E4%BA%AE\">10. 高亮</a></li>\n<li><a href=\"#11-restclient%E6%9F%A5%E8%AF%A2%E6%96%87%E6%A1%A3\">11. RestClient查询文档</a>\n<ul>\n<li><a href=\"#111-%E6%9F%A5%E8%AF%A2%E6%89%80%E6%9C%89\">11.1 查询所有</a></li>\n<li><a href=\"#112-%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2\">11.2 全文检索</a></li>\n<li><a href=\"#113-%E7%B2%BE%E7%A1%AE%E6%9F%A5%E8%AF%A2\">11.3 精确查询</a></li>\n<li><a href=\"#114-%E5%9C%B0%E7%90%86%E6%9F%A5%E8%AF%A2\">11.4 地理查询</a></li>\n<li><a href=\"#115-%E5%A4%8D%E5%90%88%E6%9F%A5%E8%AF%A2\">11.5 复合查询</a></li>\n<li><a href=\"#116-%E6%8E%92%E5%BA%8F%E5%88%86%E9%A1%B5\">11.6 排序分页</a></li>\n<li><a href=\"#117-%E9%AB%98%E4%BA%AE%E6%96%87%E6%A1%A3\">11.7 高亮文档</a></li>\n</ul>\n</li>\n<li><a href=\"#12-%E6%95%B0%E6%8D%AE%E8%81%9A%E5%90%88\">12. 数据聚合</a>\n<ul>\n<li><a href=\"#121-%E8%81%9A%E5%90%88%E7%9A%84%E5%88%86%E7%B1%BB\">12.1 聚合的分类</a></li>\n<li><a href=\"#122-dsl%E5%AE%9E%E7%8E%B0%E8%81%9A%E5%90%88\">12.2 DSL实现聚合</a></li>\n<li><a href=\"#123-restapi%E5%AE%9E%E7%8E%B0%E8%81%9A%E5%90%88\">12.3 RestAPI实现聚合</a></li>\n</ul>\n</li>\n<li><a href=\"#13-%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8\">13. 自动补全</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2023-01-08 21:42:07","dateFormat":"2023-01-08"},{"fileName":"doBPQq_Z4","abstract":"","description":"容器化部署Docker Docker如何解决大型项目依赖关系复杂，不同组件依赖的兼容性问题？ Docker允许开发汇总将应用、依赖、函数库、配置一起打包，形成可以直接安装的镜像 Docker应用运行在容器中，使用沙箱机制，相互隔离 ...","title":"Docker学习（一）","tags":[{"index":-1,"name":"Docker","slug":"docker","used":true,"link":"https://zydnc.gitee.io/docker/"},{"name":"容器","slug":"yuW0iYDQo","used":true,"link":"https://zydnc.gitee.io/yuW0iYDQo/"},{"name":"虚拟化","slug":"gjGDX1JavI","used":true,"link":"https://zydnc.gitee.io/gjGDX1JavI/"},{"name":"镜像","slug":"sO50_o3yBm","used":true,"link":"https://zydnc.gitee.io/sO50_o3yBm/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Docker.png","link":"https://zydnc.gitee.io/doBPQq_Z4/","stats":{"text":"13 min read","time":729000,"words":2781,"minutes":13},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2docker\">容器化部署Docker</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E5%BF%B5\">1. 概念</a>\n<ul>\n<li><a href=\"#11-%E9%95%9C%E5%83%8Fimage\">1.1 镜像（Image）</a></li>\n<li><a href=\"#12-%E5%AE%B9%E5%99%A8container\">1.2 容器（Container）</a></li>\n<li><a href=\"#13-dockerhub\">1.3 DockerHub</a></li>\n<li><a href=\"#14-docker\">1.4 Docker</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E5%AE%89%E8%A3%85docker\">2. 安装Docker</a>\n<ul>\n<li><a href=\"#21-centos7%E5%AE%89%E8%A3%85docker\">2.1 CentOS7安装Docker</a>\n<ul>\n<li><a href=\"#%E8%8B%A5%E4%B9%8B%E5%89%8D%E5%AE%89%E8%A3%85%E8%BF%87%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%ACdocker%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E6%96%B9%E5%BC%8F%E5%AE%8C%E6%88%90%E5%8D%B8%E8%BD%BD\">若之前安装过其他版本Docker，通过以下方式完成卸载：</a></li>\n<li><a href=\"#%E5%AE%89%E8%A3%85docker\">安装Docker</a></li>\n</ul>\n</li>\n<li><a href=\"#22-docker%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C\">2.2 Docker基本操作</a>\n<ul>\n<li><a href=\"#%E9%95%9C%E5%83%8F%E7%9B%B8%E5%85%B3%E6%8C%87%E4%BB%A4\">镜像相关指令</a></li>\n<li><a href=\"#%E5%AE%B9%E5%99%A8%E7%9B%B8%E5%85%B3%E5%91%BD%E4%BB%A4\">容器相关命令</a></li>\n</ul>\n</li>\n<li><a href=\"#23-%E6%95%B0%E6%8D%AE%E5%8D%B7%E6%93%8D%E4%BD%9C\">2.3 数据卷操作</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E9%95%9C%E5%83%8F%E7%BB%93%E6%9E%84\">3. 镜像结构</a>\n<ul>\n<li><a href=\"#31-%E8%87%AA%E5%AE%9A%E4%B9%89%E9%95%9C%E5%83%8F\">3.1 自定义镜像</a></li>\n<li><a href=\"#32-dockercompose\">3.2 DockerCompose</a>\n<ul>\n<li><a href=\"#321-%E5%AE%89%E8%A3%85dockercompose\">3.2.1 安装DockerCompose</a></li>\n<li><a href=\"#322-%E9%83%A8%E7%BD%B2%E5%BE%AE%E6%9C%8D%E5%8A%A1%E9%9B%86%E7%BE%A4\">3.2.2 部署微服务集群</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#4-docker%E9%95%9C%E5%83%8F%E4%BB%93%E5%BA%93\">4. Docker镜像仓库</a>\n<ul>\n<li><a href=\"#41-%E9%85%8D%E7%BD%AEdocker%E4%BF%A1%E4%BB%BB%E5%9C%B0%E5%9D%80\">4.1 配置Docker信任地址</a></li>\n<li><a href=\"#42-%E4%BD%BF%E7%94%A8docker%E9%83%A8%E7%BD%B2%E5%B8%A6%E6%9C%89%E5%9B%BE%E5%BD%A2%E7%95%8C%E9%9D%A2%E7%9A%84dockerregistry\">4.2 使用Docker部署带有图形界面的DockerRegistry</a></li>\n<li><a href=\"#43-%E5%9C%A8%E7%A7%81%E6%9C%89%E9%95%9C%E5%83%8F%E4%BB%93%E5%BA%93%E6%8E%A8%E9%80%81%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F\">4.3 在私有镜像仓库推送/拉取镜像</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-03-25 12:09:19","dateFormat":"2022-03-25"},{"fileName":"HTHKqujWe","abstract":"","description":"一、部署共享服务器 1. 产生原因：文件传输的服务器可以是主机之间传输文件变得简单，但本质还是传输文件，上传等功能一般不使用，若需要在服务器上传或修改文件一般使用共享文件 2. Samba共享服务程序 2.1 组成 Samba：服务器端软...","title":"Linux命令学习（十一）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/HTHKqujWe/","stats":{"text":"9 min read","time":513000,"words":2041,"minutes":9},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E9%83%A8%E7%BD%B2%E5%85%B1%E4%BA%AB%E6%9C%8D%E5%8A%A1%E5%99%A8\">一、部署共享服务器</a>\n<ul>\n<li><a href=\"#1-%E4%BA%A7%E7%94%9F%E5%8E%9F%E5%9B%A0%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%AF%E4%BB%A5%E6%98%AF%E4%B8%BB%E6%9C%BA%E4%B9%8B%E9%97%B4%E4%BC%A0%E8%BE%93%E6%96%87%E4%BB%B6%E5%8F%98%E5%BE%97%E7%AE%80%E5%8D%95%E4%BD%86%E6%9C%AC%E8%B4%A8%E8%BF%98%E6%98%AF%E4%BC%A0%E8%BE%93%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E7%AD%89%E5%8A%9F%E8%83%BD%E4%B8%80%E8%88%AC%E4%B8%8D%E4%BD%BF%E7%94%A8%E8%8B%A5%E9%9C%80%E8%A6%81%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E4%BC%A0%E6%88%96%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%E4%B8%80%E8%88%AC%E4%BD%BF%E7%94%A8%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6\">1. 产生原因：文件传输的服务器可以是主机之间传输文件变得简单，但本质还是传输文件，上传等功能一般不使用，若需要在服务器上传或修改文件一般使用共享文件</a></li>\n<li><a href=\"#2-samba%E5%85%B1%E4%BA%AB%E6%9C%8D%E5%8A%A1%E7%A8%8B%E5%BA%8F\">2. Samba共享服务程序</a>\n<ul>\n<li><a href=\"#21-%E7%BB%84%E6%88%90\">2.1 组成</a></li>\n<li><a href=\"#22-samba%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">2.2 Samba服务器配置文件</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E9%83%A8%E7%BD%B2%E5%85%B1%E4%BA%AB%E6%9C%8D%E5%8A%A1\">3. 部署共享服务</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-%E4%BD%BF%E7%94%A8lnmp%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2discuz%E8%AE%BA%E5%9D%9B\">二、 使用LNMP环境部署Discuz论坛</a>\n<ul>\n<li><a href=\"#1-lnmplinuxnginxmysqlmariadbphp\">1. LNMP：Linux+Nginx+MySQL（Mariadb）+PHP</a></li>\n<li><a href=\"#2-%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C\">2. 准备工作</a>\n<ul>\n<li><a href=\"#21-%E5%85%B3%E9%97%ADselinuxsetenforce-0\">2.1 关闭SELinux：setenforce  0</a></li>\n<li><a href=\"#22-%E5%85%B3%E9%97%AD%E9%98%B2%E7%81%AB%E5%A2%99systemctl-stop-firewalld\">2.2 关闭防火墙：systemctl  stop  firewalld</a></li>\n<li><a href=\"#23-%E6%9F%A5%E7%9C%8B%E6%9C%AC%E6%9C%BAip%E5%9C%B0%E5%9D%80ip-addr\">2.3 查看本机IP地址：ip addr</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E5%AE%89%E8%A3%85%E5%BF%85%E8%A6%81%E8%BD%AF%E4%BB%B6\">3. 安装必要软件</a>\n<ul>\n<li><a href=\"#31-%E5%AE%89%E8%A3%85%E6%89%A9%E5%B1%95%E6%BA%90yum-install-y-epel-release\">3.1  安装扩展源：yum install -y epel-release</a></li>\n<li><a href=\"#32-%E5%AE%89%E8%A3%85%E7%BC%96%E8%AF%91%E5%99%A8yum-install-y-gcc-gcc-c\">3.2  安装编译器：yum install  -y  gcc   gcc-c++</a></li>\n<li><a href=\"#33-%E5%AE%89%E8%A3%85%E8%A7%A3%E5%8E%8B%E7%BC%A9%E8%BD%AF%E4%BB%B6yum-install-y-zlib\">3.3  安装解压缩软件：yum   install  -y   zlib*</a></li>\n<li><a href=\"#34-%E5%AE%89%E8%A3%85pcre%E8%BD%AF%E4%BB%B6yum-install-y-pcre\">3.4 安装PCRE软件：yum  install  -y   pcre*</a></li>\n<li><a href=\"#35-%E5%AE%89%E8%A3%85%E5%8A%A0%E5%AF%86%E8%BD%AF%E4%BB%B6yum-install-y-openssl\">3.5 安装加密软件：yum   install    -y    openssl*</a></li>\n<li><a href=\"#36-%E5%AE%89%E8%A3%85phpyum-install-y-php\">3.6 安装PHP：yum  install   -y   php</a></li>\n<li><a href=\"#37-%E5%AE%89%E8%A3%85%E6%95%B0%E6%8D%AE%E5%BA%93yum-install-y-mariadb-server\">3.7 安装数据库：yum   install   -y   mariadb-server</a></li>\n<li><a href=\"#38-%E5%AE%89%E8%A3%85php%E6%94%AF%E6%8C%81%E8%BD%AF%E4%BB%B6yum-install-y-php-fpm-php-mysql\">3.8 安装PHP支持软件：yum  install  -y  php-fpm   php-mysql</a></li>\n<li><a href=\"#39-%E5%AE%89%E8%A3%85nginx\">3.9 安装Nginx</a></li>\n<li><a href=\"#310-%E5%9C%A8window%E4%B8%8B%E8%BD%BDdiscuz%E8%AE%BA%E5%9D%9B%E6%BA%90%E7%A0%81%E5%8C%85%E5%BF%85%E9%A1%BB%E4%B8%BAutf-8%E6%A0%BC%E5%BC%8F%E9%80%9A%E8%BF%87winscp%E4%B8%8A%E4%BC%A0%E5%88%B0linux%E5%AE%B6%E7%9B%AE%E5%BD%95%E4%B8%AD\">3.10  在Window下载Discuz论坛源码包（必须为UTF-8格式），通过WinSCP上传到Linux家目录中</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E9%85%8D%E7%BD%AEnginx\">4. 配置Nginx</a>\n<ul>\n<li><a href=\"#41-%E5%90%AF%E5%8A%A8\">4.1 启动</a></li>\n<li><a href=\"#42-%E5%B0%86discuz%E8%AE%BA%E5%9D%9B%E7%9A%84%E6%BA%90%E7%A0%81%E6%96%87%E4%BB%B6%E4%B8%ADupload%E7%9B%AE%E5%BD%95%E6%8B%B7%E8%B4%9D%E5%88%B0nginx%E9%BB%98%E8%AE%A4%E7%BD%91%E9%A1%B5%E5%AD%98%E5%82%A8%E8%B7%AF%E5%BE%84\">4.2 将Discuz论坛的源码文件中upload目录拷贝到nginx默认网页存储路径</a></li>\n<li><a href=\"#43-%E4%BF%AE%E6%94%B9nginx%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">4.3 修改nginx配置文件</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E9%85%8D%E7%BD%AEmariadb%E6%95%B0%E6%8D%AE%E5%BA%93\">5. 配置mariadb数据库</a>\n<ul>\n<li><a href=\"#51-systemctl-start-mariadb\">5.1 systemctl start mariadb</a></li>\n<li><a href=\"#52-mariadb%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%9D%E5%A7%8B%E5%8C%96\">5.2 mariadb数据库初始化</a></li>\n</ul>\n</li>\n<li><a href=\"#6-%E5%90%AF%E5%8A%A8php-fpm%E6%9C%8D%E5%8A%A1systemctl-start-php-fpm\">6. 启动php-fpm服务：systemctl  start  php-fpm</a></li>\n<li><a href=\"#7-%E5%AE%89%E8%A3%85discuz%E8%AE%BA%E5%9D%9B%E6%9C%8D%E5%8A%A1\">7. 安装Discuz论坛服务</a>\n<ul>\n<li><a href=\"#71-%E5%9C%A8windows%E7%9A%84%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E6%95%B0%E9%A2%9D%E5%A6%82http%E6%9C%8D%E5%8A%A1%E5%99%A8ip%E5%9C%B0%E5%9D%80%E8%BF%9B%E5%85%A5%E5%90%91%E5%AF%BC%E6%8C%89%E6%8F%90%E7%A4%BA%E6%93%8D%E4%BD%9C\">7.1 在Windows的浏览器中数额如http://服务器IP地址进入向导，按提示操作</a></li>\n<li><a href=\"#72-%E6%B3%A8%E6%84%8F%E5%A6%82%E6%9E%9C%E5%87%BA%E7%8E%B0%E7%BA%A2%E5%8F%89%E4%B8%80%E8%88%AC%E6%98%AF%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98%E6%88%96%E8%80%85%E8%BD%AF%E4%BB%B6%E6%9C%AA%E5%AE%89%E8%A3%85\">7.2 注意：如果出现红叉×，一般是权限问题，或者软件未安装</a></li>\n<li><a href=\"#73-%E5%AE%89%E8%A3%85%E6%95%B0%E6%8D%AE%E5%BA%93\">7.3 安装数据库</a></li>\n</ul>\n</li>\n<li><a href=\"#8-%E6%B5%8B%E8%AF%95windows%E6%89%93%E5%BC%80%E6%B5%8F%E8%A7%88%E5%99%A8%E8%BE%93%E5%85%A5%E6%9C%8D%E5%8A%A1%E5%99%A8ip%E5%9C%B0%E5%9D%80%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95\">8. 测试：Windows打开浏览器输入服务器IP地址进行测试</a></li>\n<li><a href=\"#9-lnmp%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E5%8C%85%E9%83%A8%E7%BD%B2%E8%AE%BA%E5%9D%9B\">9. LNMP一键安装包部署论坛</a>\n<ul>\n<li><a href=\"#91-%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C\">9.1 准备工作</a></li>\n<li><a href=\"#92-%E5%AE%89%E8%A3%85lnmp%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E5%8C%85\">9.2 安装LNMP一键安装包：</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-03-05 13:47:17","dateFormat":"2022-03-05"},{"fileName":"RptKbpSRd","abstract":"","description":"部署文件服务器 1. 文件服务器 1.1 一般用于文件传输协议（FTP），用于FTP客户端与服务端的文件共享、上传下载 1.2 结构：客户机/服务器（C/S架构） 1.3 端口： 20：用于数据传输 21：用于传输命令 ...","title":"Linux命令学习（十）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/RptKbpSRd/","stats":{"text":"9 min read","time":524000,"words":2250,"minutes":9},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E9%83%A8%E7%BD%B2%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8\">部署文件服务器</a>\n<ul>\n<li><a href=\"#1-%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8\">1. 文件服务器</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-03-02 13:44:29","dateFormat":"2022-03-02"},{"fileName":"7dxxE7ipp","abstract":"","description":"部署静态网站 1. web网站组成 网站服务程序：Apache、Nginx、IIS7 服务器或云存储空间 Web页面 2. 快速安装Apache服务程序 安装Apache：yum install -y httpd 关闭SELi...","title":"Linux命令学习（九）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/7dxxE7ipp/","stats":{"text":"3 min read","time":129000,"words":546,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E9%83%A8%E7%BD%B2%E9%9D%99%E6%80%81%E7%BD%91%E7%AB%99\">部署静态网站</a>\n<ul>\n<li><a href=\"#1-web%E7%BD%91%E7%AB%99%E7%BB%84%E6%88%90\">1. web网站组成</a></li>\n<li><a href=\"#2-%E5%BF%AB%E9%80%9F%E5%AE%89%E8%A3%85apache%E6%9C%8D%E5%8A%A1%E7%A8%8B%E5%BA%8F\">2. 快速安装Apache服务程序</a></li>\n<li><a href=\"#3-apache%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%88%86%E6%9E%90\">3. Apache配置文件分析</a></li>\n<li><a href=\"#4-%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2%E4%B8%AA%E4%BA%BA%E7%BD%91%E7%AB%99\">4. 快速部署个人网站</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-28 13:41:28","dateFormat":"2022-02-28"},{"fileName":"m9qF680b6","abstract":"","description":"Arch-Linux安装部署（知识小结） 1. Arch-Linux系统： 基于X86_64位架构制作的一种特别发行版，系统全部由开源软件组成，帮助文档丰富，全部由社区进行管理和维护，其镜像只提供简单的系统组件，需要全程联网才可安装部署 ...","title":"Linux命令学习（八）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/m9qF680b6/","stats":{"text":"3 min read","time":140000,"words":562,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#arch-linux%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E7%9F%A5%E8%AF%86%E5%B0%8F%E7%BB%93\">Arch-Linux安装部署（知识小结）</a>\n<ul>\n<li><a href=\"#1-arch-linux%E7%B3%BB%E7%BB%9F\">1. Arch-Linux系统：</a></li>\n<li><a href=\"#2-%E5%88%9B%E5%BB%BAarch-linux%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%BA\">2. 创建Arch-Linux的虚拟机</a></li>\n<li><a href=\"#3-%E5%90%AF%E5%8A%A8%E8%99%9A%E6%8B%9F%E6%9C%BA\">3. 启动虚拟机</a></li>\n<li><a href=\"#4-%E9%83%A8%E7%BD%B2%E7%B3%BB%E7%BB%9F\">4. 部署系统</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-26 13:38:52","dateFormat":"2022-02-26"},{"fileName":"vLqK58UZf","abstract":"","description":"一、 1. 软件下载及安装方式 1.1 源码安装 1.1.1 原理：将软件原始代码（C/C++）下载下来，将其编译后安装使用 1.1.2 源码文件：编写者使用C或C++等语言编写的原始代码文件 1.1.3 源码文件使用.ta...","title":"Linux命令学习（七）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/vLqK58UZf/","stats":{"text":"8 min read","time":476000,"words":1969,"minutes":8},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80\">一、</a>\n<ul>\n<li><a href=\"#1-%E8%BD%AF%E4%BB%B6%E4%B8%8B%E8%BD%BD%E5%8F%8A%E5%AE%89%E8%A3%85%E6%96%B9%E5%BC%8F\">1. 软件下载及安装方式</a></li>\n<li><a href=\"#2-rpm%E5%AE%89%E8%A3%85\">2. RPM安装</a></li>\n<li><a href=\"#3-yum%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85%E6%96%B9%E5%BC%8F\">3. yum软件安装方式</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-25 13:36:16","dateFormat":"2022-02-25"},{"fileName":"bjTsu6fKf","abstract":"","description":"一、vim编辑器的使用 1. vim是vi编辑器的升级版 2. vim的三种模式 2.1 命令模式：又称为浏览模式，可以控制光标移动、删除、复制、粘贴等工作 2.2 编辑模式：插入模式，可以进行正文编辑 2.3 末行模式：保存、退...","title":"Linux命令学习（六）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/bjTsu6fKf/","stats":{"text":"4 min read","time":184000,"words":803,"minutes":4},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-vim%E7%BC%96%E8%BE%91%E5%99%A8%E7%9A%84%E4%BD%BF%E7%94%A8\">一、vim编辑器的使用</a>\n<ul>\n<li><a href=\"#1-vim%E6%98%AFvi%E7%BC%96%E8%BE%91%E5%99%A8%E7%9A%84%E5%8D%87%E7%BA%A7%E7%89%88\">1. vim是vi编辑器的升级版</a></li>\n<li><a href=\"#2-vim%E7%9A%84%E4%B8%89%E7%A7%8D%E6%A8%A1%E5%BC%8F\">2. vim的三种模式</a></li>\n<li><a href=\"#3-vim%E8%BF%9B%E5%85%A5%E9%A1%BA%E5%BA%8F%E5%8F%8A%E6%96%B9%E6%B3%95\">3. vim进入顺序及方法</a></li>\n<li><a href=\"#4-%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6%E7%9A%84%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F\">4. 创建文件的三种方式</a></li>\n<li><a href=\"#5-%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%BF%AB%E6%8D%B7%E9%94%AE\">5. 命令模式下快捷键</a></li>\n<li><a href=\"#6-%E6%9C%AB%E8%A1%8C%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%9A%84%E5%BF%AB%E6%8D%B7%E9%94%AE\">6. 末行模式下的快捷键</a></li>\n<li><a href=\"#7-%E7%BC%96%E8%BE%91%E7%B3%BB%E7%BB%9F%E4%B8%BB%E6%9C%BA%E5%90%8D\">7. 编辑系统主机名：</a></li>\n<li><a href=\"#8-%E6%96%87%E6%9C%AC%E4%B8%AD%E6%89%80%E6%9C%89%E8%A1%8C%E5%85%A8%E9%83%A8%E6%B3%A8%E9%87%8A%E6%96%B9%E6%B3%95\">8. 文本中所有行全部注释方法</a></li>\n<li><a href=\"#9-%E7%BC%96%E8%BE%91%E7%BD%91%E5%8D%A1%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AE%BE%E7%BD%AE%E9%9D%99%E6%80%81ip\">9. 编辑网卡配置文件，设置静态IP</a></li>\n<li><a href=\"#10-vim%E7%9A%84%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86\">10. vim的异常处理</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-23 13:31:35","dateFormat":"2022-02-23"},{"fileName":"13bSfXXJ9","abstract":"","description":"一、RAID与LVM 1. RAID 作用：RAID独立磁盘冗余阵列，使用多块硬盘，组成大容量的硬盘组，将数据分成多个片段同时进行读写，以提高读写速度，并通过冗余备份实现数据安全性 RAID0 原理：将至少两块硬盘通过硬件或软件方...","title":"Linux命令学习（五）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/13bSfXXJ9/","stats":{"text":"9 min read","time":504000,"words":2122,"minutes":9},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-raid%E4%B8%8Elvm\">一、RAID与LVM</a>\n<ul>\n<li><a href=\"#1-raid\">1. RAID</a></li>\n<li><a href=\"#2-lvm%E9%80%BB%E8%BE%91%E5%8D%B7%E7%AE%A1%E7%90%86%E5%99%A8\">2. LVM逻辑卷管理器</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-20 13:17:12","dateFormat":"2022-02-20"},{"fileName":"iKIiXSumE","abstract":"","description":"一、 磁盘管理 1. 硬盘命名规则 名称： 硬盘：/dev/sd[a-p] 光盘：/dev/sr0 /dev/cdrom 打印机：/dev/lp[0-15] 硬盘命名分析 硬盘名称以sd开头 使用了a-p代表16块不同的硬盘 ...","title":"Linux命令学习（四）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/iKIiXSumE/","stats":{"text":"14 min read","time":819000,"words":3644,"minutes":14},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E7%A3%81%E7%9B%98%E7%AE%A1%E7%90%86\">一、 磁盘管理</a>\n<ul>\n<li><a href=\"#1-%E7%A1%AC%E7%9B%98%E5%91%BD%E5%90%8D%E8%A7%84%E5%88%99\">1. 硬盘命名规则</a></li>\n<li><a href=\"#2-%E6%B7%BB%E5%8A%A0%E6%96%B0%E7%A1%AC%E7%9B%98\">2. 添加新硬盘</a></li>\n<li><a href=\"#3-%E5%88%86%E5%8C%BA%E6%A0%BC%E5%BC%8F\">3. 分区格式</a></li>\n<li><a href=\"#4-%E5%B8%B8%E8%A7%81%E7%A3%81%E7%9B%98%E5%91%BD%E4%BB%A4\">4. 常见磁盘命令</a></li>\n<li><a href=\"#5-%E7%A1%AC%E7%9B%98%E5%88%86%E5%8C%BA\">5. 硬盘分区</a></li>\n<li><a href=\"#6-%E5%88%86%E5%8C%BA%E6%A0%BC%E5%BC%8F%E5%8C%96\">6. 分区格式化</a></li>\n<li><a href=\"#7-%E8%AE%BE%E5%A4%87%E6%8C%82%E8%BD%BD%E4%B8%8E%E5%8D%B8%E9%99%A4\">7. 设备挂载与卸除</a></li>\n<li><a href=\"#8-%E5%A4%A7%E6%96%87%E4%BB%B6%E6%8C%82%E8%BD%BD%E4%B8%BA%E5%88%86%E5%8C%BA\">8. 大文件挂载为分区</a></li>\n<li><a href=\"#9-%E5%A2%9E%E5%8A%A0swap%E4%BA%A4%E6%8D%A2%E5%88%86%E5%8C%BA%E7%A9%BA%E9%97%B4\">9. 增加swap交换分区空间</a></li>\n<li><a href=\"#10-%E8%BD%AF%E7%A1%AC%E9%93%BE%E6%8E%A5%E6%96%B9%E5%BC%8F\">10. 软硬链接方式</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-18 13:12:46","dateFormat":"2022-02-18"},{"fileName":"xc3aA90Gk","abstract":"","description":"一、文件系统命令 1. FHS 1.1 FHS：文件系统层次化标准 1.2 拓扑：倒置的树形结构，一切都从根目录（/）开始 1.3 常见一级目录存储文件功能 /boot：存储开机所需文件，如：内核、镜像、菜单的配置文件 /dev：以文件...","title":"Linux命令学习（三）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/xc3aA90Gk/","stats":{"text":"19 min read","time":1129000,"words":4875,"minutes":19},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%91%BD%E4%BB%A4\">一、文件系统命令</a>\n<ul>\n<li><a href=\"#1-fhs\">1. FHS</a></li>\n<li><a href=\"#2-%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4\">2. 文件操作命令</a></li>\n<li><a href=\"#3-%E6%96%87%E4%BB%B6%E6%9F%A5%E6%89%BE%E5%91%BD%E4%BB%A4\">3. 文件查找命令</a></li>\n<li><a href=\"#4-%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9%E8%BF%87%E6%BB%A4%E5%91%BD%E4%BB%A4\">4. 文件内容过滤命令</a></li>\n<li><a href=\"#5-%E6%96%87%E6%A1%A3%E5%86%85%E5%AE%B9%E6%9B%BF%E6%8D%A2%E5%91%BD%E4%BB%A4\">5. 文档内容替换命令</a></li>\n<li><a href=\"#6-%E6%89%93%E5%8C%85%E5%8E%8B%E7%BC%A9%E5%91%BD%E4%BB%A4\">6. 打包压缩命令</a></li>\n<li><a href=\"#7-%E7%AE%A1%E9%81%93%E7%AC%A6%E4%B8%8E%E9%87%8D%E5%AE%9A%E5%90%91%E7%AC%A6\">7. 管道符与重定向符</a></li>\n<li><a href=\"#8-%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\">8. 环境变量</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-%E7%94%A8%E6%88%B7%E8%B4%A6%E6%88%B7%E5%8F%8A%E6%9D%83%E9%99%90\">二、 用户账户及权限</a>\n<ul>\n<li><a href=\"#1-root%E8%B4%A6%E6%88%B7\">1. root账户</a></li>\n<li><a href=\"#2-uid\">2. UID</a></li>\n<li><a href=\"#3-%E6%96%B0%E5%BB%BA%E8%B4%A6%E6%88%B7\">3. 新建账户</a></li>\n<li><a href=\"#4-%E8%AE%BE%E7%BD%AE%E8%B4%A6%E6%88%B7%E5%AF%86%E7%A0%81\">4. 设置账户密码</a></li>\n<li><a href=\"#5-%E5%88%A0%E9%99%A4%E8%B4%A6%E6%88%B7\">5. 删除账户</a></li>\n<li><a href=\"#6-%E5%B7%A5%E4%BD%9C%E7%BB%84group\">6. 工作组（group）</a></li>\n<li><a href=\"#7-%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90\">7. 文件权限</a></li>\n<li><a href=\"#8-%E8%B4%A6%E6%88%B7%E5%88%87%E6%8D%A2%E5%91%BD%E4%BB%A4\">8. 账户切换命令</a></li>\n<li><a href=\"#9-sudo%E5%91%BD%E4%BB%A4\">9. sudo命令</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-15 12:36:07","dateFormat":"2022-02-15"},{"fileName":"hNHvS29UU","abstract":"","description":"一、 常见的Linux命令 1. Shell的简介 1.1 shell（壳）是一种强大的命令行工具，位于用户与系统内核之间，起到“翻译官”的作用，即识别解释用户输入的命令，并提供操作界面 1.2 结构 1.3 特点 1.3.1 系统默认...","title":"Linux命令学习（二）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/hNHvS29UU/","stats":{"text":"7 min read","time":379000,"words":1616,"minutes":7},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%B8%B8%E8%A7%81%E7%9A%84linux%E5%91%BD%E4%BB%A4\">一、 常见的Linux命令</a>\n<ul>\n<li><a href=\"#1-shell%E7%9A%84%E7%AE%80%E4%BB%8B\">1. Shell的简介</a></li>\n<li><a href=\"#2-%E5%91%BD%E4%BB%A4%E6%8F%90%E7%A4%BA%E7%AC%A6\">2. 命令提示符</a></li>\n<li><a href=\"#3-%E5%91%BD%E4%BB%A4%E6%A0%BC%E5%BC%8F\">3. 命令格式</a></li>\n<li><a href=\"#4-%E7%9B%AE%E5%BD%95%E5%88%87%E6%8D%A2%E5%91%BD%E4%BB%A4\">4. 目录切换命令</a></li>\n<li><a href=\"#5-%E7%9B%AE%E5%BD%95%E6%B5%8F%E8%A7%88%E5%91%BD%E4%BB%A4\">5. 目录浏览命令</a></li>\n<li><a href=\"#6-date%E5%91%BD%E4%BB%A4\">6. date命令</a></li>\n<li><a href=\"#7-%E6%98%BE%E7%A4%BA%E6%97%A5%E5%8E%86\">7. 显示日历</a></li>\n<li><a href=\"#8-%E7%B3%BB%E7%BB%9F%E7%8A%B6%E6%80%81%E6%A3%80%E6%B5%8B%E5%91%BD%E4%BB%A4ps\">8. 系统状态检测命令PS</a></li>\n<li><a href=\"#9-top%E5%91%BD%E4%BB%A4\">9. Top命令</a></li>\n<li><a href=\"#10-%E8%BF%9B%E7%A8%8B%E7%BB%88%E6%AD%A2%E5%91%BD%E4%BB%A4kill\">10. 进程终止命令kill</a></li>\n<li><a href=\"#11-%E6%9F%A5%E7%9C%8B%E7%BD%91%E5%8D%A1%E4%BF%A1%E6%81%AF%E5%91%BD%E4%BB%A4\">11. 查看网卡信息命令</a></li>\n<li><a href=\"#12-%E6%9F%A5%E7%9C%8B%E6%9C%AC%E6%9C%BA%E4%BF%A1%E6%81%AF%E5%91%BD%E4%BB%A4\">12. 查看本机信息命令</a></li>\n<li><a href=\"#13-%E6%9F%A5%E7%9C%8B%E5%86%85%E5%AD%98%E4%BF%A1%E6%81%AF-free\">13. 查看内存信息： free</a></li>\n<li><a href=\"#14-who%E5%91%BD%E4%BB%A4%E4%B8%8Elast%E5%91%BD%E4%BB%A4\">14. who命令与last命令</a></li>\n<li><a href=\"#15-uptime\">15. uptime</a></li>\n<li><a href=\"#16-history\">16. history</a></li>\n<li><a href=\"#17-echo%E5%91%BD%E4%BB%A4\">17. echo命令</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-12 12:33:21","dateFormat":"2022-02-12"},{"fileName":"BdIGGzKkE","abstract":"","description":"一、Linux操作系统初识 Linux操作系统 = 内核（kernel）+操作界面+第三方应用程序 版本介绍： 2.1 RedHat：红帽企业软件系统，企业常用 2.2 Centos：社区企业操作系统，学习/企业首选，与RedHa...","title":"Linux命令学习（一）","tags":[{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/"},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Linux.png","link":"https://zydnc.gitee.io/BdIGGzKkE/","stats":{"text":"6 min read","time":325000,"words":1345,"minutes":6},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-linux%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%88%9D%E8%AF%86\">一、Linux操作系统初识</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E7%9A%84%E6%90%AD%E5%BB%BA\">二、开发环境的搭建</a>\n<ul>\n<li><a href=\"#1-%E8%99%9A%E6%8B%9F%E6%9C%BAvmware%E7%9A%84%E5%AE%89%E8%A3%85\">1. 虚拟机VMware的安装</a></li>\n<li><a href=\"#2-centos7%E7%B3%BB%E7%BB%9F%E7%89%88%E6%9C%AC%E9%80%89%E6%8B%A9\">2. Centos7系统版本选择</a></li>\n<li><a href=\"#3-centos7%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%AE%89%E8%A3%85\">3. Centos7系统的安装</a>\n<ul>\n<li><a href=\"#31-%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%85%B8%E5%9E%8B\">3.1 创建新的虚拟机：典型</a></li>\n<li><a href=\"#32-%E9%9C%80%E8%A6%81%E8%87%AA%E5%AE%9A%E4%B9%89%E9%85%8D%E7%BD%AE%E5%90%A6%E5%88%99%E6%98%AF%E6%9C%80%E5%B0%8F%E5%8C%96%E5%AE%89%E8%A3%85%E9%80%89%E6%8B%A9%E7%A8%8D%E5%90%8E%E5%AE%89%E8%A3%85%E7%B3%BB%E7%BB%9F\">3.2 需要自定义配置，否则是最小化安装，选择稍后安装系统</a></li>\n<li><a href=\"#33-%E9%80%89%E6%8B%A9%E5%AE%A2%E6%88%B7%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9Flinux-centos7-64%E4%BD%8D\">3.3 选择客户机操作系统：Linux-&gt;Centos7 64位</a></li>\n<li><a href=\"#34-%E5%91%BD%E5%90%8D%E8%99%9A%E6%8B%9F%E6%9C%BA\">3.4 命名虚拟机</a></li>\n<li><a href=\"#35-%E8%87%AA%E5%AE%9A%E4%B9%89%E7%A1%AC%E4%BB%B6\">3.5 自定义硬件</a></li>\n<li><a href=\"#36-%E5%AE%89%E8%A3%85%E7%B3%BB%E7%BB%9F\">3.6 安装系统</a></li>\n<li><a href=\"#37-centos%E7%B3%BB%E7%BB%9F%E5%8A%9F%E8%83%BD%E7%9A%84%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE\">3.7 Centos系统功能的基本配置</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2022-02-10 12:26:06","dateFormat":"2022-02-10"},{"fileName":"pILxU31oU","abstract":"","description":"SSM 传统Servlet的不足 同一个类型的业务要进行多个Servlet的编写，单个Servlet功能单一 对象管理不方便，每次操作业务，都会产生很多对象 Java中的主流框架技术 Struts Hibernate Sprin...","title":"Spring+SpringMVC+MyBatis学习","tags":[{"index":-1,"name":"Spring","slug":"spring","used":true,"link":"https://zydnc.gitee.io/spring/"},{"index":-1,"name":"SpringMVC","slug":"springmvc","used":true,"link":"https://zydnc.gitee.io/springmvc/"},{"index":-1,"name":"Mybatis","slug":"mybatis","used":true,"link":"https://zydnc.gitee.io/mybatis/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SSM.png","link":"https://zydnc.gitee.io/pILxU31oU/","stats":{"text":"137 min read","time":8204000,"words":27109,"minutes":137},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li><a href=\"#ssm\">SSM</a></li>\n<li><a href=\"#java%E4%B8%AD%E7%9A%84%E4%B8%BB%E6%B5%81%E6%A1%86%E6%9E%B6%E6%8A%80%E6%9C%AF\">Java中的主流框架技术</a></li>\n<li><a href=\"#%E5%AD%A6%E4%B9%A0%E6%A1%86%E6%9E%B6%E7%9A%84%E6%80%9D%E8%B7%AF\">学习框架的思路</a></li>\n<li><a href=\"#struts2%E6%A1%86%E6%9E%B6%E7%9A%84%E4%BB%8B%E7%BB%8D\">Struts2框架的介绍</a></li>\n<li><a href=\"#hibernate%E6%A1%86%E6%9E%B6%E7%9A%84%E4%BB%8B%E7%BB%8D\">Hibernate框架的介绍</a></li>\n<li><a href=\"#java%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BC%80%E5%8F%91%E7%9A%84%E6%BC%94%E5%8C%96\">Java企业级开发的演化</a>\n<ul>\n<li><a href=\"#%E4%B8%80-spring\">一、Spring</a>\n<ul>\n<li><a href=\"#1-spring-%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E6%AD%A5%E9%AA%A4\">1. Spring 程序开发步骤</a></li>\n<li><a href=\"#2-spring-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">2. Spring 配置文件</a>\n<ul>\n<li><a href=\"#1-%E5%9F%BA%E6%9C%AC%E5%B1%9E%E6%80%A7\">①. 基本属性</a></li>\n<li><a href=\"#2-%E8%8C%83%E5%9B%B4%E9%85%8D%E7%BD%AE\">②. 范围配置</a></li>\n<li><a href=\"#3-%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%85%8D%E7%BD%AE\">③. 生命周期配置</a></li>\n<li><a href=\"#4-bean%E5%AE%9E%E4%BE%8B%E5%8C%96%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F\">④. Bean实例化三种方式</a></li>\n<li><a href=\"#5-bean%E7%9A%84%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5\">⑤. Bean的依赖注入</a>\n<ul>\n<li><a href=\"#1-set%E6%96%B9%E6%B3%95%E6%B3%A8%E5%85%A5\">1. set方法注入</a></li>\n<li><a href=\"#2-%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95%E6%B3%A8%E5%85%A5\">2. 构造方法注入</a></li>\n<li><a href=\"#3-%E6%99%AE%E9%80%9A%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E6%B3%A8%E5%85%A5\">3. 普通数据类型注入</a></li>\n<li><a href=\"#4-%E9%9B%86%E5%90%88%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E6%B3%A8%E5%85%A5\">4. 集合数据类型注入</a></li>\n</ul>\n</li>\n<li><a href=\"#6-%E5%BC%95%E5%85%A5%E5%85%B6%E4%BB%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">⑥. 引入其他配置文件</a></li>\n</ul>\n</li>\n<li><a href=\"#3-applicationcontext%E7%BB%A7%E6%89%BF%E4%BD%93%E7%B3%BB\">3. ApplicationContext继承体系</a>\n<ul>\n<li><a href=\"#1-applicationcontext\">①. ApplicationContext</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E5%B8%B8%E7%94%A8-api\">4. 常用 API</a>\n<ul>\n<li><a href=\"#1-getbean%E6%96%B9%E6%B3%95\">①. getBean()方法</a></li>\n</ul>\n</li>\n<li><a href=\"#5-spring%E9%85%8D%E7%BD%AE%E6%95%B0%E6%8D%AE%E6%BA%90\">5. Spring配置数据源</a>\n<ul>\n<li><a href=\"#1-%E6%95%B0%E6%8D%AE%E6%BA%90%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0datasource\">①. 数据源（数据库连接池：DataSource）</a></li>\n<li><a href=\"#2-%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E7%9A%84%E9%85%8D%E7%BD%AE\">②. 数据库连接池的配置</a></li>\n<li><a href=\"#3-%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E6%8A%BD%E5%8F%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">③. 数据库连接池抽取配置文件</a></li>\n</ul>\n</li>\n<li><a href=\"#6-spring%E6%B3%A8%E8%A7%A3%E5%BC%80%E5%8F%91\">6. Spring注解开发</a>\n<ul>\n<li><a href=\"#1-spring%E5%8E%9F%E5%A7%8B%E6%B3%A8%E8%A7%A3\">①. Spring原始注解</a></li>\n<li><a href=\"#2-spring%E6%96%B0%E6%B3%A8%E8%A7%A3\">②. Spring新注解</a></li>\n<li><a href=\"#3-spring%E9%9B%86%E6%88%90jnuit\">③. Spring集成Jnuit</a>\n<ul>\n<li><a href=\"#%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0\">代码实现</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#7-aop\">7. AOP</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E8%BF%B0\">①. 概述</a></li>\n<li><a href=\"#2-%E4%BD%9C%E7%94%A8\">②. 作用</a></li>\n<li><a href=\"#3-aop%E5%BA%95%E5%B1%82%E5%AE%9E%E7%8E%B0\">③. AOP底层实现</a></li>\n<li><a href=\"#4-%E7%9B%B8%E5%85%B3%E6%A6%82%E5%BF%B5\">④. 相关概念</a></li>\n<li><a href=\"#5-xml%E9%85%8D%E7%BD%AEaop%E8%AF%A6%E8%A7%A3\">⑤. XML配置AOP详解</a></li>\n<li><a href=\"#6-%E5%88%87%E7%82%B9%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%8A%BD%E5%8F%96\">⑥. 切点表达式抽取</a></li>\n<li><a href=\"#7-%E6%B3%A8%E8%A7%A3%E9%85%8D%E7%BD%AEaop\">⑦. 注解配置AOP</a></li>\n</ul>\n</li>\n<li><a href=\"#8-springjdbctemplate\">8. SpringJdbcTemplate</a>\n<ul>\n<li><a href=\"#1-%E5%AF%BC%E5%85%A5%E4%BE%9D%E8%B5%96\">①. 导入依赖</a></li>\n<li><a href=\"#2-xml%E9%85%8D%E7%BD%AE\">②. xml配置</a></li>\n</ul>\n</li>\n<li><a href=\"#9-spring%E7%9A%84%E4%BA%8B%E5%8A%A1%E6%8E%A7%E5%88%B6\">9. Spring的事务控制</a>\n<ul>\n<li><a href=\"#1-%E7%BC%96%E7%A8%8B%E5%BC%8F%E4%BA%8B%E5%8A%A1%E6%8E%A7%E5%88%B6\">①. 编程式事务控制</a></li>\n<li><a href=\"#2-%E5%A3%B0%E6%98%8E%E5%BC%8F%E4%BA%8B%E5%8A%A1%E6%8E%A7%E5%88%B6\">②. 声明式事务控制</a></li>\n</ul>\n</li>\n<li><a href=\"#10-spring%E4%B8%8Eweb%E7%8E%AF%E5%A2%83%E7%9A%84%E9%9B%86%E6%88%90\">10. Spring与web环境的集成</a>\n<ul>\n<li><a href=\"#1-applicationcontext%E7%9A%84%E8%8E%B7%E5%8F%96\">①. ApplicationContext的获取</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-springmvc\">二、SpringMVC</a>\n<ul>\n<li><a href=\"#1-%E5%BC%80%E5%8F%91%E6%AD%A5%E9%AA%A4\">1. 开发步骤</a>\n<ul>\n<li><a href=\"#1-%E5%AF%BC%E5%85%A5springmvc%E7%9A%84%E4%BE%9D%E8%B5%96\">①. 导入SpringMVC的依赖</a></li>\n<li><a href=\"#2-%E9%85%8D%E7%BD%AEspringmvc%E6%A0%B8%E5%BF%83%E6%8E%A7%E5%88%B6%E5%99%A8dispatcherservlet\">②. 配置SpringMVC核心控制器DispatcherServlet</a></li>\n<li><a href=\"#3-%E7%BC%96%E5%86%99controller%E4%B8%9A%E5%8A%A1%E5%92%8Cview%E9%A1%B5%E9%9D%A2\">③. 编写Controller业务和View页面</a></li>\n<li><a href=\"#4-%E5%B0%86controller%E4%BD%BF%E7%94%A8%E6%B3%A8%E8%A7%A3%E9%85%8D%E7%BD%AE%E5%88%B0spring%E5%AE%B9%E5%99%A8%E4%B8%AD\">④. 将Controller使用注解配置到Spring容器中</a></li>\n<li><a href=\"#5-%E9%85%8D%E7%BD%AEspring-mvcxml%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE%E7%BB%84%E4%BB%B6%E6%89%AB%E6%8F%8F\">⑤. 配置spring-mvc.xml文件（配置组件扫描）</a></li>\n<li><a href=\"#6-%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%91%E8%B5%B7%E8%AF%B7%E6%B1%82%E6%B5%8B%E8%AF%95\">⑥. 客户端发起请求测试</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0\">2. 代码实现</a></li>\n<li><a href=\"#3-%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%A4%BA\">3. 流程图示</a></li>\n<li><a href=\"#4-%E6%89%A7%E8%A1%8C%E6%B5%81%E7%A8%8B\">4. 执行流程</a>\n<ul>\n<li><a href=\"#1-%E7%94%A8%E6%88%B7%E5%8F%91%E9%80%81%E8%AF%B7%E6%B1%82%E5%88%B0%E5%89%8D%E7%AB%AF%E6%8E%A7%E5%88%B6%E5%99%A8dispatcherservlet\">①. 用户发送请求到前端控制器DispatcherServlet</a></li>\n<li><a href=\"#2-dispatcherservlet%E6%94%B6%E5%88%B0%E8%AF%B7%E6%B1%82%E8%B0%83%E7%94%A8handlermapping%E5%A4%84%E7%90%86%E5%99%A8%E6%98%A0%E5%B0%84%E5%99%A8\">②. DispatcherServlet收到请求调用HandlerMapping处理器映射器</a></li>\n<li><a href=\"#3-%E5%A4%84%E7%90%86%E5%99%A8%E6%98%A0%E5%B0%84%E5%99%A8%E6%89%BE%E5%88%B0%E5%85%B7%E4%BD%93%E7%9A%84%E5%A4%84%E7%90%86%E5%99%A8%E5%8F%AF%E4%BB%A5%E6%A0%B9%E6%8D%AExml%E6%88%96%E8%80%85%E6%B3%A8%E8%A7%A3%E8%BF%9B%E8%A1%8C%E6%9F%A5%E6%89%BE%E7%94%9F%E6%88%90%E5%A4%84%E7%90%86%E5%99%A8%E5%AF%B9%E8%B1%A1%E5%8F%8A%E5%A4%84%E7%90%86%E5%99%A8%E6%8B%A6%E6%88%AA%E5%99%A8%E5%A6%82%E6%9E%9C%E6%9C%89%E5%88%99%E7%94%9F%E6%88%90%E4%B8%80%E5%B9%B6%E8%BF%94%E5%9B%9E%E7%BB%99dispatcherservlet\">③. 处理器映射器找到具体的处理器（可以根据xml或者注解进行查找），生成处理器对象及处理器拦截器（如果有则生成）一并返回给DispatcherServlet</a></li>\n<li><a href=\"#4-disptcherservlet%E8%B0%83%E7%94%A8handleradaptor%E5%A4%84%E7%90%86%E5%99%A8%E9%80%82%E9%85%8D%E5%99%A8\">④. DisptcherServlet调用HandlerAdaptor处理器适配器</a></li>\n<li><a href=\"#5-handleradaptor%E7%BB%8F%E8%BF%87%E9%80%82%E9%85%8D%E5%99%A8%E8%B0%83%E7%94%A8%E5%85%B7%E4%BD%93%E7%9A%84%E5%A4%84%E7%90%86%E5%99%A8controller%E4%B9%9F%E5%8F%AB%E5%90%8E%E7%AB%AF%E6%8E%A7%E5%88%B6%E5%99%A8\">⑤. HandlerAdaptor经过适配器调用具体的处理器（Controller，也叫后端控制器）</a></li>\n<li><a href=\"#6-controller%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%88%90%E8%BF%94%E5%9B%9Emodelandview\">⑥. Controller执行完成返回ModelAndView</a></li>\n<li><a href=\"#7-handleradaptor%E5%B0%86controller%E6%89%A7%E8%A1%8C%E7%BB%93modelandview%E8%BF%94%E5%9B%9E%E7%BB%99dispatcherservlet\">⑦. HandlerAdaptor将controller执行结ModelAndView返回给DispatcherServlet</a></li>\n<li><a href=\"#8-dispatcherservlet%E5%B0%86modelandview%E4%BC%A0%E7%BB%99viewreslover%E8%A7%86%E5%9B%BE%E8%A7%A3%E6%9E%90%E5%99%A8\">⑧. DispatcherServlet将ModelAndView传给ViewReslover视图解析器</a></li>\n<li><a href=\"#9-viewreslover%E8%A7%A3%E6%9E%90%E5%90%8E%E8%BF%94%E5%9B%9E%E5%85%B7%E4%BD%93view\">⑨. ViewReslover解析后返回具体View</a></li>\n<li><a href=\"#10-dispatcherservlet%E6%A0%B9%E6%8D%AEview%E8%BF%9B%E8%A1%8C%E6%B8%B2%E6%9F%93%E8%A7%86%E5%9B%BE%E5%B0%86%E6%A8%A1%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%A1%AB%E5%85%85%E8%87%B3%E8%A7%86%E5%9B%BE%E4%B8%AD%E7%94%B1dispatcherservlet%E5%93%8D%E5%BA%94%E7%94%A8%E6%88%B7\">⑩. DispatcherServlet根据View进行渲染视图（将模型数据填充至视图中），由DispatcherServlet响应用户</a></li>\n</ul>\n</li>\n<li><a href=\"#5-springmvc%E6%B3%A8%E8%A7%A3%E8%A7%A3%E6%9E%90\">5. SpringMVC注解解析</a>\n<ul>\n<li><a href=\"#1-requestmapping\">①. <code>@RequestMapping</code></a></li>\n</ul>\n</li>\n<li><a href=\"#6-springmvc%E7%9A%84xml%E9%85%8D%E7%BD%AE\">6. SpringMVC的xml配置</a></li>\n<li><a href=\"#7-springmvc%E7%9A%84%E7%9B%B8%E5%85%B3%E7%BB%84%E4%BB%B6\">7. SpringMVC的相关组件</a></li>\n<li><a href=\"#8-springmvc%E6%95%B0%E6%8D%AE%E5%93%8D%E5%BA%94%E6%96%B9%E5%BC%8F\">8. SpringMVC数据响应方式</a>\n<ul>\n<li><a href=\"#1-%E9%A1%B5%E9%9D%A2%E8%B7%B3%E8%BD%AC\">①. 页面跳转</a></li>\n<li><a href=\"#2-%E5%9B%9E%E5%86%99%E6%95%B0%E6%8D%AE\">②. 回写数据</a></li>\n</ul>\n</li>\n<li><a href=\"#9-springmvc%E8%8E%B7%E5%BE%97%E8%AF%B7%E6%B1%82%E6%95%B0%E6%8D%AE\">9. SpringMVC获得请求数据</a>\n<ul>\n<li><a href=\"#1-%E8%8E%B7%E5%BE%97%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0\">①. 获得请求参数</a></li>\n<li><a href=\"#2-%E8%8E%B7%E5%BE%97%E4%B8%80%E4%B8%AA%E5%9F%BA%E6%9C%AC%E7%B1%BB%E5%9E%8B%E5%8F%82%E6%95%B0\">②. 获得一个基本类型参数</a></li>\n<li><a href=\"#3-%E8%8E%B7%E5%BE%97%E4%B8%80%E4%B8%AApojo%E7%B1%BB%E5%9E%8B%E5%8F%82%E6%95%B0\">③. 获得一个POJO类型参数</a></li>\n<li><a href=\"#4-%E8%8E%B7%E5%BE%97%E4%B8%80%E4%B8%AA%E6%95%B0%E7%BB%84%E7%B1%BB%E5%9E%8B%E5%8F%82%E6%95%B0\">④. 获得一个数组类型参数</a></li>\n<li><a href=\"#5-%E8%8E%B7%E5%BE%97%E4%B8%80%E4%B8%AA%E9%9B%86%E5%90%88%E7%B1%BB%E5%9E%8B%E5%8F%82%E6%95%B0%E4%B8%80\">⑤. 获得一个集合类型参数(一)</a></li>\n<li><a href=\"#6-%E8%8E%B7%E5%BE%97%E4%B8%80%E4%B8%AA%E9%9B%86%E5%90%88%E7%B1%BB%E5%9E%8B%E5%8F%82%E6%95%B0%E4%BA%8C\">⑥. 获得一个集合类型参数(二)</a></li>\n<li><a href=\"#7-%E5%BC%80%E5%90%AF%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E8%AE%BF%E9%97%AE\">⑦. 开启静态资源访问</a></li>\n<li><a href=\"#8-%E9%85%8D%E7%BD%AE%E5%85%A8%E5%B1%80%E4%B9%B1%E7%A0%81%E8%BF%87%E6%BB%A4%E5%99%A8\">⑧. 配置全局乱码过滤器</a></li>\n<li><a href=\"#9-%E5%8F%82%E6%95%B0%E7%BB%91%E5%AE%9A%E6%B3%A8%E8%A7%A3\">⑨. 参数绑定注解</a></li>\n</ul>\n</li>\n<li><a href=\"#10-restful%E9%A3%8E%E6%A0%BC\">10. Restful风格</a>\n<ul>\n<li><a href=\"#1-restful%E9%A3%8E%E6%A0%BC%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E7%9A%84%E8%8E%B7%E5%8F%96\">①. Restful风格请求参数的获取</a></li>\n</ul>\n</li>\n<li><a href=\"#11-springmvc%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2%E5%99%A8\">11. SpringMVC自定义类型转换器</a>\n<ul>\n<li><a href=\"#%E6%AD%A5%E9%AA%A4\">步骤</a></li>\n</ul>\n</li>\n<li><a href=\"#12-springmvc%E8%8E%B7%E5%8F%96%E8%AF%B7%E6%B1%82%E5%A4%B4%E6%95%B0%E6%8D%AE\">12. SpringMVC获取请求头数据</a>\n<ul>\n<li><a href=\"#1-requestheader\">①. <code>@RequestHeader</code></a></li>\n<li><a href=\"#2-cookievalue\">②. <code>@CookieValue</code></a></li>\n</ul>\n</li>\n<li><a href=\"#13-springmvc%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0\">13. SpringMVC文件上传</a>\n<ul>\n<li><a href=\"#1-%E7%AE%80%E5%8D%95%E4%B8%8A%E4%BC%A0%E8%A1%A8%E5%8D%95\">①. 简单上传表单</a></li>\n<li><a href=\"#2-%E5%AF%BC%E5%85%A5%E4%BE%9D%E8%B5%96\">②. 导入依赖</a></li>\n<li><a href=\"#3-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E8%A7%A3%E6%9E%90%E5%99%A8\">③. 配置文件上传解析器</a></li>\n<li><a href=\"#4-%E7%BC%96%E5%86%99%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%A4%84%E7%90%86%E4%BB%A3%E7%A0%81\">④. 编写文件上传处理代码</a></li>\n</ul>\n</li>\n<li><a href=\"#14-springmvc%E5%A4%9A%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0\">14. SpringMVC多文件上传</a>\n<ul>\n<li><a href=\"#1-%E7%AE%80%E5%8D%95%E4%B8%8A%E4%BC%A0%E8%A1%A8%E5%8D%95-2\">①. 简单上传表单</a></li>\n<li><a href=\"#2-%E7%BC%96%E5%86%99%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%A4%84%E7%90%86%E4%BB%A3%E7%A0%81\">②. 编写文件上传处理代码</a></li>\n</ul>\n</li>\n<li><a href=\"#15-springmvc%E6%8B%A6%E6%88%AA%E5%99%A8\">15. SpringMVC拦截器</a>\n<ul>\n<li><a href=\"#1-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8B%A6%E6%88%AA%E5%99%A8\">①. 自定义拦截器</a></li>\n<li><a href=\"#2-%E6%8B%A6%E6%88%AA%E5%99%A8%E6%96%B9%E6%B3%95\">②. 拦截器方法</a></li>\n</ul>\n</li>\n<li><a href=\"#16-springmvc%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86\">16. SpringMVC异常处理</a>\n<ul>\n<li><a href=\"#1-%E7%AE%80%E5%8D%95%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%E5%99%A8\">①. 简单异常处理器</a></li>\n<li><a href=\"#2-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%E5%99%A8\">②. 自定义异常处理器</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-%E6%A1%88%E4%BE%8B%E7%BB%83%E4%B9%A0\">三、案例练习</a>\n<ul>\n<li><a href=\"#1-spring%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA\">1. Spring环境搭建</a>\n<ul>\n<li><a href=\"#1-%E9%85%8D%E7%BD%AE-applicationcontextxml\">①. 配置 applicationContext.xml</a></li>\n<li><a href=\"#2-%E9%85%8D%E7%BD%AE-spring-mvcxml\">②. 配置 spring-mvc.xml</a></li>\n<li><a href=\"#3-%E9%85%8D%E7%BD%AE-webxml\">③. 配置 web.xml</a></li>\n<li><a href=\"#4-%E9%85%8D%E7%BD%AE-jdbcproperties\">④. 配置 jdbc.properties</a></li>\n<li><a href=\"#5-%E9%85%8D%E7%BD%AE-pomxml\">⑤. 配置 pom.xml</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E4%B8%9A%E5%8A%A1%E4%BB%A3%E7%A0%81\">2. 业务代码</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%9B%9B-mybatis\">四、 MyBatis</a>\n<ul>\n<li><a href=\"#1-mybatis%E7%AE%80%E4%BB%8B\">1. MyBatis简介</a></li>\n<li><a href=\"#2-mybatis%E5%BC%80%E5%8F%91%E6%AD%A5%E9%AA%A4\">2. MyBatis开发步骤</a>\n<ul>\n<li><a href=\"#1-%E6%B7%BB%E5%8A%A0mybatis%E7%9A%84%E5%9D%90%E6%A0%87\">①. 添加MyBatis的坐标</a></li>\n<li><a href=\"#2-%E5%88%9B%E5%BB%BAuser%E6%95%B0%E6%8D%AE%E8%A1%A8\">②. 创建user数据表</a></li>\n<li><a href=\"#3-%E7%BC%96%E5%86%99user%E5%AE%9E%E4%BD%93%E7%B1%BB\">③. 编写User实体类</a></li>\n<li><a href=\"#4-%E7%BC%96%E5%86%99%E6%98%A0%E5%B0%84%E6%96%87%E4%BB%B6usermapperxml\">④. 编写映射文件UserMapper.xml</a></li>\n<li><a href=\"#5-%E7%BC%96%E5%86%99%E6%A0%B8%E5%BF%83%E6%96%87%E4%BB%B6sqlmapconfigxml\">⑤. 编写核心文件SqlMapConfig.xml</a></li>\n<li><a href=\"#6-%E7%BC%96%E5%86%99%E6%8C%81%E4%B9%85%E5%B1%82%E4%BB%A3%E7%A0%81\">⑥. 编写持久层代码</a></li>\n</ul>\n</li>\n<li><a href=\"#3-mybatis%E6%9F%A5%E8%AF%A2%E6%95%B0%E6%8D%AE\">3. MyBatis查询数据</a></li>\n<li><a href=\"#4-mybatis%E6%8F%92%E5%85%A5%E6%95%B0%E6%8D%AE\">4. MyBatis插入数据</a></li>\n<li><a href=\"#5-mybatis%E4%BF%AE%E6%94%B9%E6%95%B0%E6%8D%AE\">5. Mybatis修改数据</a></li>\n<li><a href=\"#6-mybatis%E5%88%A0%E9%99%A4%E6%95%B0%E6%8D%AE\">6. MyBatis删除数据</a></li>\n<li><a href=\"#7-mybatis%E6%A0%B8%E5%BF%83%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">7. MyBatis核心配置文件</a>\n<ul>\n<li><a href=\"#1-environments-%E6%A0%87%E7%AD%BE\">①. <code>environments</code> 标签</a></li>\n<li><a href=\"#2-mappers-%E6%A0%87%E7%AD%BE\">②. <code>mappers</code> 标签</a></li>\n<li><a href=\"#3-properties-%E6%A0%87%E7%AD%BE\">③. <code>properties</code> 标签</a></li>\n<li><a href=\"#4-typealiases-%E6%A0%87%E7%AD%BE\">④. <code>typeAliases</code> 标签</a></li>\n</ul>\n</li>\n<li><a href=\"#8-mybatis%E7%9A%84api\">8. MyBatis的API</a></li>\n<li><a href=\"#9-mybatis%E7%9A%84%E4%BB%A3%E7%90%86%E5%BC%80%E5%8F%91%E6%96%B9%E5%BC%8F\">9. MyBatis的代理开发方式</a>\n<ul>\n<li><a href=\"#1-%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83\">①. 开发规范</a></li>\n<li><a href=\"#2-%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0-2\">②. 代码实现</a></li>\n</ul>\n</li>\n<li><a href=\"#10-mybatis%E6%98%A0%E5%B0%84%E6%96%87%E4%BB%B6%E6%B7%B1%E5%85%A5\">10. MyBatis映射文件深入</a>\n<ul>\n<li><a href=\"#1-%E5%8A%A8%E6%80%81sql\">①. 动态SQL</a></li>\n<li><a href=\"#2-sql%E8%AF%AD%E5%8F%A5%E7%9A%84%E6%8A%BD%E5%8F%96\">②. SQL语句的抽取</a></li>\n<li><a href=\"#3-%E5%B0%8F%E7%BB%93\">③. 小结</a></li>\n</ul>\n</li>\n<li><a href=\"#11-mybatis%E6%A0%B8%E5%BF%83%E6%96%87%E4%BB%B6%E6%B7%B1%E5%85%A5\">11. MyBatis核心文件深入</a>\n<ul>\n<li><a href=\"#1-typehandlers-%E6%A0%87%E7%AD%BE\">①. <code>typeHandlers</code> 标签</a></li>\n<li><a href=\"#2-plugins-%E6%A0%87%E7%AD%BE\">②. <code>plugins</code> 标签</a></li>\n</ul>\n</li>\n<li><a href=\"#12-mybatis%E7%9A%84%E5%A4%9A%E8%A1%A8%E6%93%8D%E4%BD%9C\">12. MyBatis的多表操作</a>\n<ul>\n<li><a href=\"#1-%E4%B8%80%E5%AF%B9%E4%B8%80%E6%9F%A5%E8%AF%A2%E6%A8%A1%E5%9E%8B\">①. 一对一查询模型</a>\n<ul>\n<li><a href=\"#%E5%88%9B%E5%BB%BA%E8%AE%A2%E5%8D%95order%E5%AF%B9%E8%B1%A1\">创建订单Order对象</a></li>\n<li><a href=\"#%E9%85%8D%E7%BD%AE%E6%98%A0%E5%B0%84%E6%96%87%E4%BB%B6\">配置映射文件</a></li>\n<li><a href=\"#%E4%BC%98%E5%8C%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">优化配置文件</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E4%B8%80%E5%AF%B9%E5%A4%9A%E6%9F%A5%E8%AF%A2%E6%A8%A1%E5%9E%8B\">②. 一对多查询模型</a>\n<ul>\n<li><a href=\"#%E5%88%9B%E5%BB%BA%E7%94%A8%E6%88%B7user%E5%AF%B9%E8%B1%A1\">创建用户User对象</a></li>\n<li><a href=\"#%E9%85%8D%E7%BD%AEusermapperxml\">配置UserMapper.xml</a></li>\n<li><a href=\"#%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C\">测试结果</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E5%A4%9A%E5%AF%B9%E5%A4%9A%E6%9F%A5%E8%AF%A2%E6%A8%A1%E5%9E%8B\">③. 多对多查询模型</a></li>\n<li><a href=\"#4-%E5%B0%8F%E7%BB%93\">④. 小结</a></li>\n</ul>\n</li>\n<li><a href=\"#13-mybatis%E7%9A%84%E6%B3%A8%E8%A7%A3%E5%BC%80%E5%8F%91\">13. MyBatis的注解开发</a>\n<ul>\n<li><a href=\"#1-insert-%E5%AE%9E%E7%8E%B0%E6%8F%92%E5%85%A5\">①. <code>@Insert</code> 实现插入</a></li>\n<li><a href=\"#2-update-%E5%AE%9E%E7%8E%B0%E6%9B%B4%E6%96%B0\">②. <code>@Update</code> 实现更新</a></li>\n<li><a href=\"#3-delete-%E5%AE%9E%E7%8E%B0%E5%88%A0%E9%99%A4\">③. <code>@Delete</code> 实现删除</a></li>\n<li><a href=\"#4-select-%E5%AE%9E%E7%8E%B0%E6%9F%A5%E8%AF%A2\">④. <code>@Select</code> 实现查询</a></li>\n<li><a href=\"#5-result-%E5%AE%9E%E7%8E%B0%E7%BB%93%E6%9E%9C%E9%9B%86%E5%B0%81%E8%A3%85\">⑤. <code>@Result</code> 实现结果集封装</a></li>\n<li><a href=\"#6-results-%E5%8F%AF%E4%BB%A5%E4%B8%8E-result-%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%E5%B0%81%E8%A3%85%E5%A4%9A%E4%B8%AA%E7%BB%93%E6%9E%9C%E9%9B%86\">⑥. <code>@Results</code> 可以与 <code>@Result</code> 一起使用，封装多个结果集</a></li>\n<li><a href=\"#7-one-%E5%AE%9E%E7%8E%B0%E4%B8%80%E5%AF%B9%E4%B8%80%E7%BB%93%E6%9E%9C%E9%9B%86%E5%B0%81%E8%A3%85\">⑦. <code>@One</code> 实现一对一结果集封装</a></li>\n<li><a href=\"#8-many-%E5%AE%9E%E7%8E%B0%E4%B8%80%E5%AF%B9%E5%A4%9A%E7%BB%93%E6%9E%9C%E9%9B%86%E5%B0%81%E8%A3%85\">⑧. <code>@Many</code> 实现一对多结果集封装</a></li>\n</ul>\n</li>\n<li><a href=\"#14-%E5%AF%BC%E5%87%BA%E8%B5%84%E6%BA%90%E5%A4%B1%E8%B4%A5%E9%97%AE%E9%A2%98\">14. 导出资源失败问题</a></li>\n<li><a href=\"#15-%E6%95%B0%E6%8D%AE%E5%BA%93%E5%92%8C%E5%AE%9E%E4%BD%93%E7%B1%BB%E6%98%A0%E5%B0%84%E4%B8%9A%E5%86%85%E5%85%B1%E8%AF%86\">15. 数据库和实体类映射业内共识</a></li>\n<li><a href=\"#16-mybatis%E7%9A%84%E9%80%86%E5%90%91%E5%88%9B%E5%BB%BApojo\">16. MyBatis的逆向创建POJO</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%94-ssm%E6%A1%86%E6%9E%B6%E6%95%B4%E5%90%88\">五、SSM框架整合</a>\n<ul>\n<li><a href=\"#1-%E5%8E%9F%E5%A7%8B%E6%95%B4%E5%90%88%E6%96%B9%E5%BC%8F\">1. 原始整合方式</a>\n<ul>\n<li><a href=\"#1-%E5%AF%BC%E5%85%A5pomxml%E4%BE%9D%E8%B5%96\">①. 导入pom.xml依赖</a></li>\n<li><a href=\"#2-%E5%88%9B%E5%BB%BA%E5%AE%9E%E4%BD%93%E7%B1%BBaccountjava\">②. 创建实体类Account.java</a></li>\n<li><a href=\"#3-%E7%BC%96%E5%86%99accountmapperjava\">③. 编写AccountMapper.java</a></li>\n<li><a href=\"#4-%E7%BC%96%E5%86%99accountservicejava\">④. 编写AccountService.java</a></li>\n<li><a href=\"#5-%E7%BC%96%E5%86%99accountserviceimpljava\">⑤. 编写AccountServiceImpl.java</a></li>\n<li><a href=\"#6-%E7%BC%96%E5%86%99%E5%B7%A5%E5%85%B7%E7%B1%BBmyutilsjava\">⑥. 编写工具类MyUtils.java</a></li>\n<li><a href=\"#7-%E7%BC%96%E5%86%99accountcontrollerjava\">⑦. 编写AccountController.java</a></li>\n<li><a href=\"#8-%E9%85%8D%E7%BD%AEspringspringmvcmybatis\">⑧. 配置Spring+SpringMVC+MyBatis</a>\n<ul>\n<li><a href=\"#springapplicationcontextxml\">Spring：applicationContext.xml</a></li>\n<li><a href=\"#springmvcspring-mvcxml\">SpringMVC：spring-mvc.xml</a></li>\n<li><a href=\"#mybatisaccountmapperxml-sqlmapconfigxml\">MyBatis：AccountMapper.xml + SqlMapConfig.xml</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#2-%E4%BC%98%E5%8C%96%E6%95%B4%E5%90%88%E6%96%B9%E5%BC%8F\">2. 优化整合方式</a>\n<ul>\n<li><a href=\"#1-%E5%AF%BC%E5%85%A5pomxml%E4%BE%9D%E8%B5%96-2\">①. 导入pom.xml依赖</a></li>\n<li><a href=\"#2-%E5%B0%86sqlsessionfactory%E9%85%8D%E7%BD%AE%E5%88%B0spring%E5%AE%B9%E5%99%A8%E4%B8%AD\">②. 将SqlSessionFactory配置到Spring容器中</a></li>\n<li><a href=\"#3-%E4%B9%A6%E5%86%99accountcontrollerjava\">③. 书写AccountController.java</a></li>\n<li><a href=\"#4-%E5%A3%B0%E6%98%8E%E5%BC%8F%E4%BA%8B%E5%8A%A1%E6%8E%A7%E5%88%B6\">④. 声明式事务控制</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%85%AD-%E5%88%86%E5%B8%83%E5%BC%8F%E6%A1%86%E6%9E%B6\">六、分布式框架</a><br>\n*\n<ul>\n<li><a href=\"#%E5%8D%95%E4%BD%93%E6%9E%B6%E6%9E%84\">单体架构</a></li>\n<li><a href=\"#%E5%9E%82%E7%9B%B4%E6%9E%B6%E6%9E%84\">垂直架构</a></li>\n<li><a href=\"#soa%E6%9E%B6%E6%9E%84\">SOA架构</a></li>\n<li><a href=\"#%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84\">微服务架构</a></li>\n<li><a href=\"#1-apache-dubbo\">1. Apache Dubbo</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%83-vue%E5%AD%A6%E4%B9%A0\">七、Vue学习</a>\n<ul>\n<li><a href=\"#1-%E7%AE%80%E4%BB%8B\">1. 简介</a></li>\n<li><a href=\"#2-%E6%90%AD%E5%BB%BA%E7%A4%BA%E4%BE%8B%E5%B7%A5%E7%A8%8B\">2. 搭建示例工程</a></li>\n<li><a href=\"#3-%E6%BC%94%E7%A4%BA%E5%8F%8C%E5%90%91%E7%BB%91%E5%AE%9A%E4%B8%8E%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86\">3. 演示双向绑定与事件处理</a>\n<ul>\n<li><a href=\"#1-%E6%8F%92%E5%80%BC%E5%BC%95%E7%94%A8-key\">①. 插值引用 <code>{{key}}</code></a></li>\n<li><a href=\"#2-%E5%8F%8C%E5%90%91%E7%BB%91%E5%AE%9A-v-model\">②. 双向绑定 <code>v-model</code></a></li>\n<li><a href=\"#3-%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86-v-on%E4%BA%8B%E4%BB%B6\">③. 事件处理 <code>v-on:事件</code></a></li>\n</ul>\n</li>\n<li><a href=\"#4-vue%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E4%BB%A5%E5%8F%8A%E9%92%A9%E5%AD%90%E5%87%BD%E6%95%B0\">4. Vue的生命周期以及钩子函数</a>\n<ul>\n<li><a href=\"#1-%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F\">①. 生命周期</a></li>\n<li><a href=\"#2-%E9%92%A9%E5%AD%90%E5%87%BD%E6%95%B0\">②. 钩子函数</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E6%8F%92%E5%80%BC\">5. 插值 <code>{{}}</code></a></li>\n<li><a href=\"#6-%E5%8F%8C%E5%90%91%E7%BB%91%E5%AE%9A-v-model\">6. 双向绑定 <code>v-model</code></a></li>\n<li><a href=\"#7-%E4%BA%8B%E4%BB%B6%E7%BB%91%E5%AE%9A-v-on\">7. 事件绑定 <code>v-on</code></a></li>\n<li><a href=\"#8-%E6%95%B0%E7%BB%84-%E5%AF%B9%E8%B1%A1%E9%81%8D%E5%8E%86\">8. 数组、对象遍历</a></li>\n<li><a href=\"#8-%E6%8C%87%E4%BB%A4-v-if-v-show\">8. 指令 <code>v-if</code> <code>v-show</code></a>\n<ul>\n<li><a href=\"#1-v-if-v-else-if-v-else\">①. <code>v-if</code> <code>v-else-if</code> <code>v-else</code></a></li>\n<li><a href=\"#2-v-show\">②. <code>v-show</code></a></li>\n</ul>\n</li>\n<li><a href=\"#9-%E6%8C%87%E4%BB%A4-v-bind\">9. 指令 <code>v-bind</code></a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%85%AB-springboot\">八、SpringBoot</a>\n<ul>\n<li><a href=\"#1-%E4%BB%80%E4%B9%88%E6%98%AFspringboot\">1. 什么是SpringBoot</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E8%BF%B0-2\">①. 概述</a></li>\n<li><a href=\"#2-%E4%BD%9C%E7%94%A8-2\">②. 作用</a></li>\n<li><a href=\"#3-%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98\">③. 解决的问题</a></li>\n<li><a href=\"#4-%E4%B8%BB%E8%A6%81%E7%89%B9%E7%82%B9\">④. 主要特点</a></li>\n</ul>\n</li>\n<li><a href=\"#2-springboot%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">2. SpringBoot配置文件</a>\n<ul>\n<li><a href=\"#1-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B\">①. 配置文件类型</a></li>\n<li><a href=\"#2-yaml%E4%BB%A5%E6%95%B0%E6%8D%AE%E4%B8%BA%E6%A0%B8%E5%BF%83%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">②. yaml：以数据为核心的配置文件</a></li>\n<li><a href=\"#3-springboot%E5%86%85%E9%83%A8%E9%85%8D%E7%BD%AE%E5%8A%A0%E8%BD%BD%E9%A1%BA%E5%BA%8F\">③. SpringBoot内部配置加载顺序</a></li>\n</ul>\n</li>\n<li><a href=\"#3-springboot%E5%85%A5%E9%97%A8\">3. SpringBoot入门</a>\n<ul>\n<li><a href=\"#1-%E6%AD%A5%E9%AA%A4\">①. 步骤</a></li>\n<li><a href=\"#2-java%E4%BB%A3%E7%A0%81%E6%96%B9%E5%BC%8F%E9%85%8D%E7%BD%AE\">②. Java代码方式配置</a></li>\n<li><a href=\"#3-springboot%E5%B1%9E%E6%80%A7%E6%B3%A8%E5%85%A5%E6%96%B9%E5%BC%8F\">③. SpringBoot属性注入方式</a></li>\n<li><a href=\"#4-%E5%A4%9A%E4%B8%AAyml%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE%E5%A4%9A%E4%B8%AAproperties%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE\">④. 多个yml文件配置（多个properties文件配置）</a></li>\n<li><a href=\"#5-lombok%E5%BA%94%E7%94%A8\">⑤. lombok应用</a></li>\n<li><a href=\"#6-%E4%BF%AE%E6%94%B9springmvc%E7%AB%AF%E5%8F%A3%E5%92%8C%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90\">⑥. 修改SpringMVC端口和静态资源</a></li>\n<li><a href=\"#7-springmvc%E6%8B%A6%E6%88%AA%E5%99%A8%E9%85%8D%E7%BD%AE\">⑦. SpringMVC拦截器配置</a></li>\n<li><a href=\"#8-%E4%BA%8B%E5%8A%A1%E5%92%8C%E8%BF%9E%E6%8E%A5%E6%B1%A0\">⑧. 事务和连接池</a></li>\n<li><a href=\"#9-springboot%E6%95%B4%E5%90%88mybatis\">⑨. SpringBoot整合MyBatis</a></li>\n<li><a href=\"#10-springboot%E9%80%9A%E7%94%A8mapper\">⑩. SpringBoot通用Mapper</a></li>\n</ul>\n</li>\n<li><a href=\"#3-springboot%E6%95%B4%E5%90%88%E6%B5%8B%E8%AF%95\">3. SpringBoot整合测试</a></li>\n<li><a href=\"#4-springboot%E6%95%B4%E5%90%88junit\">4. SpringBoot整合Junit</a>\n<ul>\n<li><a href=\"#1-%E6%B7%BB%E5%8A%A0%E5%90%AF%E5%8A%A8%E5%99%A8%E4%BE%9D%E8%B5%96-spring-boot-starter-test\">①. 添加启动器依赖 <code>spring-boot-starter-test</code></a></li>\n<li><a href=\"#2-%E7%BC%96%E5%86%99%E6%B5%8B%E8%AF%95%E4%BB%A3%E7%A0%81\">②. 编写测试代码</a></li>\n</ul>\n</li>\n<li><a href=\"#5-springboot%E6%95%B4%E5%90%88redis\">5. SpringBoot整合Redis</a>\n<ul>\n<li><a href=\"#1-%E6%B7%BB%E5%8A%A0%E5%90%AF%E5%8A%A8%E5%99%A8%E4%BE%9D%E8%B5%96-spring-boot-starter-data-redis\">①. 添加启动器依赖 <code>spring-boot-starter-data-redis</code></a></li>\n<li><a href=\"#2-%E9%85%8D%E7%BD%AEapplicationyml%E4%B8%AD%E4%BF%AE%E6%94%B9redis%E7%9A%84%E8%BF%9E%E6%8E%A5%E5%8F%82%E6%95%B0\">②. 配置application.yml中修改redis的连接参数</a></li>\n<li><a href=\"#3-%E7%BC%96%E5%86%99%E6%B5%8B%E8%AF%95%E7%B1%BB%E5%BC%95%E7%94%A8redistemplate%E6%93%8D%E4%BD%9Credis%E4%B8%AD%E7%9A%84%E4%BA%94%E7%A7%8D%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B\">③. 编写测试类引用RedisTemplate操作redis中的五种数据类型</a></li>\n</ul>\n</li>\n<li><a href=\"#6-springboot%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2\">6. SpringBoot项目部署</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%B9%9D-thymeleaf\">九、thymeleaf</a></li>\n<li><a href=\"#%E5%8D%81-springsecurity\">十、 SpringSecurity</a>\n<ul>\n<li><a href=\"#1-%E6%AD%A5%E9%AA%A4-2\">1. 步骤</a>\n<ul>\n<li><a href=\"#1-httpbasic%E6%A8%A1%E5%BC%8F%E7%9A%84%E8%AE%A4%E8%AF%81\">①. HttpBasic模式的认证</a></li>\n<li><a href=\"#2-formlogin%E6%A8%A1%E5%BC%8F%E7%9A%84%E8%AE%A4%E8%AF%81\">②. FormLogin模式的认证</a></li>\n<li><a href=\"#3-%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E6%9E%B6%E6%9E%84%E7%9A%84%E8%AE%A4%E8%AF%81\">③. 前后端分离架构的认证</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#%E5%8D%81%E4%B8%80-mybatis-plus\">十一、MyBatis-Plus</a>\n<ul>\n<li><a href=\"#1-%E5%AF%BC%E5%8C%85\">1. 导包</a></li>\n<li><a href=\"#2-%E9%85%8D%E7%BD%AElog4j\">2. 配置log4j</a></li>\n<li><a href=\"#3-springboot%E6%95%B4%E5%90%88mybatis-plus\">3. SpringBoot整合Mybatis-Plus</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-04-16 22:33:22","dateFormat":"2021-04-16"},{"fileName":"3pOEFSCc4","abstract":"","description":"1. 关键字 A.理解： Java中事先定义的，含有特别意义的标识符 private 一种访问控制方式：私有模式 protected 一种访问控制方式：保护模式 public 一种访问控制方式：公有模式 abstrac...","title":"JavaSE学习","tags":[{"name":"JavaSE","slug":"LRJO48mE0","used":true,"link":"https://zydnc.gitee.io/LRJO48mE0/"}],"feature":"http://pic.zyblog.xyz/blog/poster/JavaSE.png","link":"https://zydnc.gitee.io/3pOEFSCc4/","stats":{"text":"224 min read","time":13423000,"words":52096,"minutes":224},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#1-%E5%85%B3%E9%94%AE%E5%AD%97\">1. 关键字</a>\n<ul>\n<li><a href=\"#a%E7%90%86%E8%A7%A3-java%E4%B8%AD%E4%BA%8B%E5%85%88%E5%AE%9A%E4%B9%89%E7%9A%84%E5%90%AB%E6%9C%89%E7%89%B9%E5%88%AB%E6%84%8F%E4%B9%89%E7%9A%84%E6%A0%87%E8%AF%86%E7%AC%A6\">A.理解： Java中事先定义的，含有特别意义的标识符</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E4%BF%9D%E7%95%99%E5%AD%97\">2. 保留字</a>\n<ul>\n<li><a href=\"#a-%E7%90%86%E8%A7%A3java%E4%B8%AD%E4%BA%8B%E5%85%88%E5%AE%9A%E4%B9%89%E7%9A%84%E4%BB%A5%E5%90%8E%E7%9A%84%E7%89%88%E6%9C%AC%E5%8F%AF%E8%83%BD%E8%A2%AB%E4%BD%BF%E7%94%A8%E7%9A%84%E6%A0%87%E8%AF%86%E7%AC%A6\">A. 理解：Java中事先定义的以后的版本可能被使用的标识符</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E6%A0%87%E8%AF%86%E7%AC%A6\">3. 标识符</a>\n<ul>\n<li><a href=\"#a-%E7%90%86%E8%A7%A3%E7%94%A8%E6%9D%A5%E8%A1%A8%E7%A4%BA%E7%B1%BB%E5%90%8D%E5%8F%98%E9%87%8F%E5%90%8D%E6%96%B9%E6%B3%95%E5%90%8D%E7%B1%BB%E5%9E%8B%E5%90%8D%E6%95%B0%E7%BB%84%E5%90%8D%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E6%9C%89%E6%95%88%E5%AD%97%E7%AC%A6%E5%BA%8F%E5%88%97%E7%A7%B0%E4%B8%BA%E6%A0%87%E8%AF%86%E7%AC%A6%E9%80%9A%E4%BF%97%E8%AE%B2%E8%87%AA%E5%B7%B1%E8%B5%B7%E7%9A%84%E5%90%8D%E5%AD%97\">A. 理解：用来表示类名，变量名，方法名，类型名，数组名，文件名的有效字符序列称为标识符（通俗讲：自己起的名字）</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E6%B3%A8%E9%87%8A\">4. 注释</a>\n<ul>\n<li><a href=\"#a-%E7%90%86%E8%A7%A3%E7%94%A8%E4%BA%8E%E8%A7%A3%E9%87%8A%E8%AF%B4%E6%98%8E%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%96%87%E5%AD%97%E4%BF%A1%E6%81%AF\">A. 理解：用于解释说明程序的文字信息</a></li>\n<li><a href=\"#b-%E7%B1%BB%E5%88%AB\">B. 类别：</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2\">5. 进制转换</a>\n<ul>\n<li><a href=\"#a-%E4%BA%8C%E8%BF%9B%E5%88%B6\">A. 二进制</a></li>\n<li><a href=\"#b-%E5%85%AB%E8%BF%9B%E5%88%B6\">B. 八进制</a></li>\n<li><a href=\"#c-%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6\">C. 十六进制</a></li>\n<li><a href=\"#d-%E5%8D%81%E8%BF%9B%E5%88%B6\">D. 十进制</a></li>\n</ul>\n</li>\n<li><a href=\"#6-%E5%8F%98%E9%87%8F\">6. 变量</a>\n<ul>\n<li><a href=\"#a-%E7%90%86%E8%A7%A3%E5%86%85%E5%AD%98%E4%B8%AD%E7%9A%84%E4%B8%80%E5%9D%97%E6%8B%A5%E6%9C%89%E5%90%8D%E7%A7%B0%E5%8F%AF%E4%BB%A5%E5%AD%98%E5%82%A8%E6%95%B0%E6%8D%AE%E7%9A%84%E5%AD%98%E5%82%A8%E5%8C%BA%E5%9F%9F\">A. 理解：内存中的一块拥有名称可以存储数据的存储区域</a></li>\n<li><a href=\"#b-%E5%8F%98%E9%87%8F%E7%9A%84%E5%A3%B0%E6%98%8E%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B-%E5%8F%98%E9%87%8F%E5%90%8D-%E5%8F%98%E9%87%8F%E5%80%BC\">B. 变量的声明：数据类型   变量名   =    变量值</a></li>\n<li><a href=\"#c-%E5%8F%98%E9%87%8F%E5%BF%85%E9%A1%BB%E5%88%9D%E5%A7%8B%E5%8C%96%E6%89%8D%E8%83%BD%E4%BD%BF%E7%94%A8%E5%88%9D%E5%A7%8B%E5%8C%96%E5%B0%B1%E6%98%AF%E7%BB%99%E4%B8%80%E4%B8%AA%E5%88%9D%E5%A7%8B%E5%80%BC\">C. 变量必须初始化才能使用，初始化就是给一个初始值</a></li>\n</ul>\n</li>\n<li><a href=\"#7-%E5%B8%B8%E9%87%8F\">7. 常量</a>\n<ul>\n<li><a href=\"#a-%E7%90%86%E8%A7%A3%E5%9C%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E5%9B%BA%E5%AE%9A%E4%B8%8D%E5%8F%98%E7%9A%84%E5%80%BC%E6%98%AF%E4%B8%8D%E8%83%BD%E6%94%B9%E5%8F%98%E7%9A%84%E6%95%B0%E6%8D%AE\">A. 理解：在程序中固定不变的值，是不能改变的数据。</a></li>\n<li><a href=\"#b-%E5%AD%97%E9%9D%A2%E5%B8%B8%E9%87%8F%E5%80%BC%E4%B8%8D%E4%BC%9A%E5%8F%98%E5%8C%96%E7%9A%84%E9%87%8F\">B. 字面常量：（值不会变化的量）</a></li>\n<li><a href=\"#c-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B8%B8%E9%87%8F\">C. 自定义常量：</a></li>\n</ul>\n</li>\n<li><a href=\"#8-%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B\">8. 数据类型</a>\n<ul>\n<li><a href=\"#a-%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B\">A. 基本数据类型</a></li>\n<li><a href=\"#b-%E5%BC%95%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B\">B. 引用数据类型</a></li>\n<li><a href=\"#c-%E6%B3%A8%E6%84%8F%E5%9C%A8%E6%95%B0%E6%8D%AE%E5%81%9A%E4%B8%BA%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E7%9A%84%E6%97%B6%E5%80%99%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E6%98%AF%E5%80%BC%E4%BC%A0%E9%80%92%E5%BC%95%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E6%98%AF%E5%BC%95%E7%94%A8%E4%BC%A0%E9%80%92%E5%9C%B0%E5%9D%80%E4%BC%A0%E9%80%92\">C. 注意：在数据做为参数传递的时候，基本数据类型是值传递，引用数据类型是引用传递（地址传递）</a></li>\n<li><a href=\"#d-%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2\">D. 数据类型转换</a></li>\n</ul>\n</li>\n<li><a href=\"#9-%E5%AD%97%E7%AC%A6%E9%9B%86%E5%92%8C%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81\">9. 字符集和字符编码</a>\n<ul>\n<li><a href=\"#a-%E4%B8%BA%E4%BA%86%E5%AE%9E%E7%8E%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%AE%A4%E8%AF%86%E5%AD%97%E6%AF%8D-%E7%AC%A6%E5%8F%B7-%E5%9B%BE%E5%BD%A2\">A. 为了实现计算机认识字母、符号、图形</a></li>\n<li><a href=\"#b-%E5%AD%97%E7%AC%A6%E9%9B%86%E5%B0%B1%E6%98%AF%E5%AD%97%E6%AF%8D%E6%95%B0%E5%AD%97%E6%8C%87%E5%AE%9A%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%BC%96%E7%A0%81\">B. 字符集就是字母数字指定的二进制编码</a></li>\n<li><a href=\"#c-%E5%AD%97%E7%AC%A6%E9%9B%86%E5%88%B6%E6%88%90%E7%9A%84%E8%A1%A8%E7%A4%BA%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81%E8%A1%A8\">C. 字符集制成的表示字符编码表</a></li>\n</ul>\n</li>\n<li><a href=\"#10-%E8%BF%90%E7%AE%97%E7%AC%A6\">10. 运算符</a>\n<ul>\n<li><a href=\"#a-%E7%AE%97%E6%95%B0%E8%BF%90%E7%AE%97%E7%AC%A6\">A. 算数运算符</a></li>\n<li><a href=\"#b-%E8%B5%8B%E5%80%BC%E8%BF%90%E7%AE%97%E7%AC%A6\">B. 赋值运算符</a></li>\n<li><a href=\"#c-%E6%AF%94%E8%BE%83%E5%85%B3%E7%B3%BB%E8%BF%90%E7%AE%97%E7%AC%A6\">C. 比较（关系）运算符</a></li>\n<li><a href=\"#d-%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97%E7%AC%A6%E5%B7%A6%E5%8F%B3%E4%B8%A4%E4%BE%A7%E5%9D%87%E4%B8%BA%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F\">D. 逻辑运算符（左右两侧均为布尔表达式）</a></li>\n<li><a href=\"#e-%E4%BD%8D%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BD%8D%E8%BF%90%E7%AE%97%E6%98%AF%E6%9C%80%E5%BF%AB%E7%9A%84\">E. 位运算符（位运算是最快的）</a></li>\n<li><a href=\"#f-%E4%B8%89%E5%85%83%E4%B8%89%E7%9B%AE%E8%BF%90%E7%AE%97%E7%AC%A6\">F. 三元（三目）运算符</a></li>\n<li><a href=\"#g-instanceof%E8%BF%90%E7%AE%97%E7%AC%A6\">G. instanceof运算符</a></li>\n</ul>\n</li>\n<li><a href=\"#11-%E8%BD%AC%E4%B9%89%E5%AD%97%E7%AC%A6\">11. 转义字符</a></li>\n<li><a href=\"#12-%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E8%AF%AD%E5%8F%A5\">12. 流程控制语句</a>\n<ul>\n<li><a href=\"#a-%E9%A1%BA%E5%BA%8F%E8%AF%AD%E5%8F%A5%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E7%9A%84%E6%97%B6%E5%80%99%E6%98%AF%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E4%BB%8E%E5%B7%A6%E5%88%B0%E5%8F%B3%E7%9A%84\">A. 顺序语句：代码执行的时候是从上到下，从左到右的</a></li>\n<li><a href=\"#b-%E5%88%86%E6%94%AF%E8%AF%AD%E5%8F%A5\">B. 分支语句：</a></li>\n<li><a href=\"#c-%E5%BE%AA%E7%8E%AF%E8%AF%AD%E5%8F%A5\">C. 循环语句：</a></li>\n<li><a href=\"#d-%E5%BE%AA%E7%8E%AF%E5%B5%8C%E5%A5%97\">D. 循环嵌套：</a></li>\n<li><a href=\"#e-debug%E8%B0%83%E8%AF%95%E5%B7%A5%E5%85%B7\">E. Debug调试工具</a></li>\n<li><a href=\"#f-%E6%8C%87%E5%AE%9A%E8%B7%B3%E8%BD%AC%E7%9A%84%E4%BD%8D%E7%BD%AEjava%E7%9A%84%E6%A0%87%E7%AD%BE\">F. 指定跳转的位置（java的标签）</a></li>\n</ul>\n</li>\n<li><a href=\"#13-%E6%95%B0%E7%BB%84\">13. 数组</a>\n<ul>\n<li><a href=\"#a-%E6%95%B0%E7%BB%84%E5%8F%AA%E8%83%BD%E4%BF%9D%E5%AD%98%E4%B8%80%E7%A7%8D%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%95%B0%E6%8D%AE\">A. 数组只能保存一种类型的数据</a></li>\n<li><a href=\"#b-%E6%95%B0%E7%BB%84%E5%8F%AA%E8%A6%81%E5%A3%B0%E6%98%8E%E4%BA%86%E9%82%A3%E4%B9%88%E6%95%B0%E7%BB%84%E7%9A%84%E9%95%BF%E5%BA%A6%E5%9C%A8%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%B0%B1%E6%98%AF%E5%9B%BA%E5%AE%9A%E4%B8%8D%E5%8F%AF%E5%8F%98%E5%8C%96%E7%9A%84%E5%8D%B3%E4%BD%BF%E7%A7%BB%E9%99%A4%E6%95%B0%E7%BB%84%E7%9A%84%E5%80%BC\">B. 数组只要声明了，那么数组的长度在程序运行过程中就是固定不可变化的，即使移除数组的值</a></li>\n<li><a href=\"#c-%E6%95%B0%E7%BB%84%E7%9A%84%E5%A3%B0%E6%98%8E\">C. 数组的声明</a></li>\n<li><a href=\"#d-%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84\">D. 一维数组</a></li>\n<li><a href=\"#e-%E6%95%B0%E7%BB%84%E7%9A%84%E9%81%8D%E5%8E%86\">E. 数组的遍历</a></li>\n<li><a href=\"#f-%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84\">F. 二维数组</a></li>\n<li><a href=\"#g-%E6%95%B0%E7%BB%84%E7%9A%84%E6%8E%92%E5%BA%8F\">G. 数组的排序</a></li>\n</ul>\n</li>\n<li><a href=\"#%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F\">选择排序</a></li>\n<li><a href=\"#%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F\">冒泡排序</a></li>\n<li><a href=\"#%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F\">插入排序</a></li>\n<li><a href=\"#%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F\">快速排序</a>\n<ul>\n<li><a href=\"#h-%E5%85%83%E7%B4%A0%E7%9A%84%E6%9F%A5%E6%89%BE\">H. 元素的查找</a></li>\n</ul>\n</li>\n<li><a href=\"#14-java%E7%9A%84%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B\">14. java的内存模型</a></li>\n<li><a href=\"#15-%E6%96%B9%E6%B3%95\">15. 方法</a>\n<ul>\n<li><a href=\"#a-%E7%90%86%E8%A7%A3%E5%AF%B9%E4%B8%80%E6%AE%B5%E4%BB%A3%E7%A0%81%E7%9A%84%E5%B0%81%E8%A3%85\">A. 理解：对一段代码的封装</a></li>\n</ul>\n</li>\n<li><a href=\"#16-%E5%8F%98%E9%87%8F%E4%BD%9C%E7%94%A8%E5%9F%9F\">16. 变量作用域</a></li>\n<li><a href=\"#17-%E4%BB%A3%E7%A0%81%E5%9D%97\">17. 代码块</a>\n<ul>\n<li><a href=\"#1-%E5%B1%80%E9%83%A8%E4%BB%A3%E7%A0%81%E5%9D%97\">1. 局部代码块</a></li>\n<li><a href=\"#2-%E6%9E%84%E9%80%A0%E4%BB%A3%E7%A0%81%E5%9D%97\">2. 构造代码块</a></li>\n<li><a href=\"#3-%E9%9D%99%E6%80%81%E4%BB%A3%E7%A0%81%E5%9D%97\">3. 静态代码块</a></li>\n<li><a href=\"#4-%E5%90%8C%E6%AD%A5%E4%BB%A3%E7%A0%81%E5%9D%97\">4. 同步代码块</a></li>\n<li><a href=\"#5-%E9%9D%99%E6%80%81%E4%BB%A3%E7%A0%81%E5%9D%97-%E6%9E%84%E9%80%A0%E4%BB%A3%E7%A0%81%E5%9D%97%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F%E5%92%8C%E6%AC%A1%E6%95%B0\">5. 静态代码块、构造代码块，构造方法的执行顺序和次数</a></li>\n</ul>\n</li>\n<li><a href=\"#18-%E6%96%B9%E6%B3%95%E7%9A%84%E9%87%8D%E8%BD%BD\">18. 方法的重载</a></li>\n<li><a href=\"#19-%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1\">19. 面向对象</a>\n<ul>\n<li><a href=\"#1-%E5%B0%81%E8%A3%85encapsulation\">1. 封装（<strong>Encapsulation</strong>）</a></li>\n<li><a href=\"#2-%E7%BB%A7%E6%89%BFinheritance\">2. 继承（<strong>Inheritance</strong>）</a></li>\n<li><a href=\"#3-%E5%A4%9A%E6%80%81polymorphism\">3. 多态（<strong>Polymorphism</strong>）</a></li>\n<li><a href=\"#%E5%BC%80%E5%8F%91%E5%8E%9F%E5%88%99%E4%BD%8E%E8%80%A6%E5%90%88%E9%AB%98%E5%86%85%E8%81%9A\">开发原则：低耦合，高内聚</a></li>\n</ul>\n</li>\n<li><a href=\"#20-%E7%B1%BB\">20. 类</a></li>\n<li><a href=\"#21-%E5%AF%B9%E8%B1%A1\">21. 对象</a></li>\n<li><a href=\"#22-%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F%E5%92%8C%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%E7%9A%84%E5%8C%BA%E5%88%AB\">22. 成员变量和局部变量的区别</a></li>\n<li><a href=\"#23-%E5%8F%82%E6%95%B0%E9%97%AE%E9%A2%98\">23. 参数问题</a></li>\n<li><a href=\"#24-%E5%8C%BF%E5%90%8D%E5%AF%B9%E8%B1%A1\">24. 匿名对象</a></li>\n<li><a href=\"#25-equals%E4%B8%8E\">25. equals（）与   ==</a></li>\n<li><a href=\"#26-this%E5%85%B3%E9%94%AE%E5%AD%97\">26. this关键字</a>\n<ul>\n<li><a href=\"#this-%E5%BD%93%E5%89%8D%E5%AF%B9%E8%B1%A1%E6%89%80%E5%9C%A8%E7%B1%BB%E7%9A%84%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%BC%95%E7%94%A8\">this   -&gt;   当前对象(所在类的对象的“引用”)</a></li>\n</ul>\n</li>\n<li><a href=\"#27-%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95\">27. 构造方法</a></li>\n<li><a href=\"#28-%E7%B1%BB%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%87%E7%A8%8B\">28. 类的初始化过程</a></li>\n<li><a href=\"#29-static%E5%85%B3%E9%94%AE%E5%AD%97\">29. static关键字</a></li>\n<li><a href=\"#30-main%E6%96%B9%E6%B3%95\">30. main方法</a></li>\n<li><a href=\"#31-%E6%96%87%E6%A1%A3%E6%B3%A8%E9%87%8A\">31.  文档注释</a></li>\n<li><a href=\"#32-%E7%BB%A7%E6%89%BFextends\">32. 继承（extends）</a></li>\n<li><a href=\"#33-super%E5%85%B3%E9%94%AE%E5%AD%97\">33. super关键字</a></li>\n<li><a href=\"#34-%E7%BB%A7%E6%89%BF%E4%B8%AD%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95%E7%9A%84%E5%85%B3%E7%B3%BB\">34. 继承中构造方法的关系</a></li>\n<li><a href=\"#35-%E7%BB%A7%E6%89%BF%E4%B8%AD%E6%88%90%E5%91%98%E6%96%B9%E6%B3%95%E7%9A%84%E5%85%B3%E7%B3%BB\">35. 继承中成员方法的关系</a></li>\n<li><a href=\"#36-%E6%96%B9%E6%B3%95%E7%9A%84%E9%87%8D%E5%86%99\">36. 方法的重写</a></li>\n<li><a href=\"#37-%E6%96%B9%E6%B3%95%E9%87%8D%E8%BD%BD%E5%92%8C%E6%96%B9%E6%B3%95%E9%87%8D%E5%86%99%E7%9A%84%E5%8C%BA%E5%88%AB\">37. 方法重载和方法重写的区别</a></li>\n<li><a href=\"#38-%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%E4%BF%AE%E9%A5%B0%E7%AC%A6\">38. 访问权限修饰符</a>\n<ul>\n<li><a href=\"#1-public\">1. public</a></li>\n<li><a href=\"#2-protected\">2. protected</a></li>\n<li><a href=\"#3-private\">3. private</a></li>\n<li><a href=\"#4-friendly\">4. friendly</a></li>\n</ul>\n</li>\n<li><a href=\"#39-%E5%85%B6%E4%BB%96%E4%BF%AE%E9%A5%B0%E7%AC%A6\">39. 其他修饰符</a>\n<ul>\n<li><a href=\"#1-static\">1. static</a></li>\n<li><a href=\"#2-final\">2. final</a></li>\n<li><a href=\"#3-abstract\">3. abstract</a></li>\n<li><a href=\"#4-synchronized\">4. synchronized</a></li>\n<li><a href=\"#5-transient\">5. transient</a></li>\n<li><a href=\"#6-volatile\">6. volatile</a></li>\n</ul>\n</li>\n<li><a href=\"#40-%E5%A4%9A%E6%80%81\">40. 多态</a>\n<ul>\n<li><a href=\"#1-%E5%A4%9A%E6%80%81%E7%9A%84%E5%89%8D%E6%8F%90%E5%92%8C%E8%A1%A8%E7%8E%B0\">1. 多态的前提和表现</a></li>\n<li><a href=\"#2-%E5%A4%9A%E6%80%81%E4%B8%AD%E6%88%90%E5%91%98%E7%9A%84%E8%AE%BF%E9%97%AE%E7%89%B9%E7%82%B9\">2. 多态中成员的访问特点</a></li>\n<li><a href=\"#3-%E5%A4%9A%E6%80%81%E7%9A%84%E5%A5%BD%E5%A4%84%E5%92%8C%E5%BC%8A%E7%AB%AF\">3. 多态的好处和弊端</a>\n<ul>\n<li><a href=\"#%E5%A5%BD%E5%A4%84\">好处：</a></li>\n<li><a href=\"#%E5%BC%8A%E7%AB%AF\">弊端：</a></li>\n<li><a href=\"#%E9%9A%BE%E9%81%93%E7%9C%9F%E7%9A%84%E4%B8%8D%E8%83%BD%E8%AE%BF%E9%97%AE%E5%AD%90%E7%B1%BB%E7%9A%84%E5%86%85%E5%AE%B9%E5%90%97\">难道真的不能访问子类的内容吗？</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E5%A4%9A%E6%80%81%E7%9A%84%E4%BD%9C%E7%94%A8\">4. 多态的作用</a></li>\n</ul>\n</li>\n<li><a href=\"#41-%E6%8A%BD%E8%B1%A1%E7%B1%BBabstract\">41. 抽象类（abstract）</a>\n<ul>\n<li><a href=\"#1-%E6%8A%BD%E8%B1%A1%E7%B1%BB%E7%9A%84%E5%AE%9A%E4%B9%89\">1. 抽象类的定义：</a></li>\n<li><a href=\"#2-%E6%8A%BD%E8%B1%A1%E6%96%B9%E6%B3%95\">2. 抽象方法</a></li>\n<li><a href=\"#3-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">3. 注意事项</a></li>\n<li><a href=\"#4-%E6%8A%BD%E8%B1%A1%E7%B1%BB%E7%9A%84%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95%E7%9A%84%E6%84%8F%E4%B9%89\">4. 抽象类的构造方法的意义</a></li>\n<li><a href=\"#5-%E6%8A%BD%E8%B1%A1%E7%B1%BB%E4%B8%AD%E7%9A%84%E6%88%90%E5%91%98%E7%89%B9%E7%82%B9\">5. 抽象类中的成员特点</a></li>\n<li><a href=\"#6-%E6%8A%BD%E8%B1%A1%E7%B1%BB%E4%B8%AD%E7%9A%84%E5%87%A0%E4%B8%AA%E9%97%AE%E9%A2%98\">6. 抽象类中的几个问题</a></li>\n</ul>\n</li>\n<li><a href=\"#42-%E6%8E%A5%E5%8F%A3\">42. 接口</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E8%BF%B0\">1. 概述</a></li>\n<li><a href=\"#2-%E6%8E%A5%E5%8F%A3%E7%9A%84%E8%A1%A8%E7%A4%BA%E5%BD%A2%E5%BC%8F\">2. 接口的表示形式</a></li>\n<li><a href=\"#3-%E7%89%B9%E7%82%B9\">3. 特点</a></li>\n<li><a href=\"#4-%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%AE%9E%E7%8E%B0%E7%B1%BB\">4. 接口的实现类</a></li>\n<li><a href=\"#5-%E5%A4%9A%E6%80%81%E7%B1%BB%E5%9E%8B\">5. 多态类型</a></li>\n<li><a href=\"#6-%E6%8E%A5%E5%8F%A3%E4%B8%AD%E7%9A%84%E6%88%90%E5%91%98%E7%89%B9%E7%82%B9\">6. 接口中的成员特点</a></li>\n<li><a href=\"#7-%E7%B1%BB%E5%92%8C%E7%B1%BB-%E7%B1%BB%E5%92%8C%E6%8E%A5%E5%8F%A3-%E6%8E%A5%E5%8F%A3%E5%92%8C%E6%8E%A5%E5%8F%A3%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB\">7. 类和类、类和接口、接口和接口之间的关系</a></li>\n<li><a href=\"#8-%E6%8A%BD%E8%B1%A1%E7%B1%BB%E5%92%8C%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%8C%BA%E5%88%AB\">8. 抽象类和接口的区别</a></li>\n<li><a href=\"#9-%E7%8C%AB%E7%8B%97%E6%A1%88%E4%BE%8B%E5%8A%A0%E5%85%A5%E4%B8%80%E4%B8%AA%E9%92%BB%E7%81%AB%E5%9C%88%E7%9A%84%E9%A2%9D%E5%A4%96%E5%8A%9F%E8%83%BD\">9. 猫狗案例，加入一个钻火圈的额外功能</a></li>\n</ul>\n</li>\n<li><a href=\"#43-%E5%BD%A2%E5%8F%82%E5%92%8C%E8%BF%94%E5%9B%9E%E5%80%BC%E6%B7%B1%E5%85%A5%E7%A0%94%E7%A9%B6\">43. 形参和返回值深入研究</a>\n<ul>\n<li><a href=\"#1-%E5%BD%A2%E5%8F%82\">1. 形参</a></li>\n<li><a href=\"#2-%E8%BF%94%E5%9B%9E%E5%80%BC%E7%B1%BB%E5%9E%8B\">2. 返回值类型</a></li>\n</ul>\n</li>\n<li><a href=\"#44-%E5%8C%85\">44. 包</a>\n<ul>\n<li><a href=\"#1-%E4%BD%9C%E7%94%A8\">1. 作用</a></li>\n<li><a href=\"#2-%E5%8C%85%E7%9A%84%E5%88%92%E5%88%86\">2. 包的划分</a></li>\n<li><a href=\"#3-%E5%8C%85%E7%9A%84%E5%AE%9A%E4%B9%89%E5%92%8C%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">3. 包的定义和注意事项</a></li>\n<li><a href=\"#4-%E5%B8%A6%E5%8C%85%E7%9A%84%E7%BC%96%E8%AF%91%E5%92%8C%E8%BF%90%E8%A1%8C\">4. 带包的编译和运行</a></li>\n<li><a href=\"#5-%E5%AF%BC%E5%8C%85\">5. 导包</a></li>\n</ul>\n</li>\n<li><a href=\"#45-%E7%B1%BB%E5%92%8C%E7%B1%BB%E7%9A%84%E7%BB%84%E6%88%90%E5%8F%AF%E7%94%A8%E7%9A%84%E4%BF%AE%E9%A5%B0%E7%AC%A6\">45. 类和类的组成可用的修饰符</a></li>\n<li><a href=\"#46-%E5%86%85%E9%83%A8%E7%B1%BB\">46. 内部类</a>\n<ul>\n<li><a href=\"#1-%E6%8A%8A%E4%B8%80%E4%B8%AA%E7%B1%BB%E5%AE%9A%E4%B9%89%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%B1%BB%E7%9A%84%E5%86%85%E9%83%A8%E8%BF%99%E4%B8%AA%E9%87%8C%E9%9D%A2%E7%9A%84%E7%B1%BB%E5%B0%B1%E6%98%AF%E5%86%85%E9%83%A8%E7%B1%BB\">1. 把一个类定义在另一个类的内部，这个里面的类就是内部类</a></li>\n<li><a href=\"#2-%E5%88%86%E7%B1%BB\">2. 分类</a>\n<ul>\n<li><a href=\"#21-%E6%A0%B9%E6%8D%AE%E5%86%85%E9%83%A8%E7%B1%BB%E5%9C%A8%E7%B1%BB%E4%B8%AD%E5%AE%9A%E4%B9%89%E7%9A%84%E4%BD%8D%E7%BD%AE%E4%B8%8D%E5%90%8C\">2.1 根据内部类在类中定义的位置不同</a></li>\n<li><a href=\"#22-%E6%A0%B9%E6%8D%AE%E7%8A%B6%E6%80%81%E4%BF%AE%E9%A5%B0%E7%AC%A6\">2.2 根据状态修饰符</a></li>\n<li><a href=\"#23-%E6%A0%B9%E6%8D%AE%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%E4%BF%AE%E9%A5%B0%E7%AC%A6\">2.3 根据访问权限修饰符</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E6%88%90%E5%91%98%E5%86%85%E9%83%A8%E7%B1%BB\">3. 成员内部类</a>\n<ul>\n<li><a href=\"#31-%E6%A0%BC%E5%BC%8F\">3.1 格式</a></li>\n<li><a href=\"#32-%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1%E6%A0%BC%E5%BC%8F\">3.2 创建对象格式</a></li>\n<li><a href=\"#33-%E5%86%85%E9%83%A8%E7%B1%BB%E7%9A%84%E6%88%90%E5%91%98%E4%B8%8E%E5%A4%96%E9%83%A8%E7%B1%BB%E7%9A%84%E6%88%90%E5%91%98%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F\">3.3. 内部类的成员与外部类的成员的使用方式</a></li>\n<li><a href=\"#34-%E6%88%90%E5%91%98%E5%86%85%E9%83%A8%E7%B1%BB%E5%B8%B8%E8%A7%81%E7%94%A8%E6%B3%95%E5%92%8C%E5%B8%B8%E7%94%A8%E4%BF%AE%E9%A5%B0%E7%AC%A6\">3.4 成员内部类常见用法和常用修饰符</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E5%B1%80%E9%83%A8%E5%86%85%E9%83%A8%E7%B1%BB\">4. 局部内部类</a>\n<ul>\n<li><a href=\"#41-%E5%AE%9A%E4%B9%89\">4.1 定义：</a></li>\n<li><a href=\"#42-%E6%A0%BC%E5%BC%8F\">4.2 格式：</a></li>\n<li><a href=\"#43-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">4.3 注意事项：</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB\">5. 匿名内部类</a>\n<ul>\n<li><a href=\"#51-%E6%A0%BC%E5%BC%8F\">5.1 格式：</a></li>\n<li><a href=\"#52-%E6%9C%AC%E8%B4%A8\">5.2 本质</a></li>\n<li><a href=\"#53-%E4%BE%8B\">5.3 例</a></li>\n<li><a href=\"#54-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\">5.4 注意事项</a></li>\n<li><a href=\"#55-%E4%BE%8B\">5.5 例</a></li>\n</ul>\n</li>\n<li><a href=\"#6-lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F\">6. Lambda表达式</a>\n<ul>\n<li><a href=\"#61-%E6%A6%82%E8%BF%B0%E7%94%A8%E6%9D%A5%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E6%8E%A5%E5%8F%A3%E6%9C%AC%E8%B4%A8%E6%98%AF%E4%B8%80%E4%B8%AA%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0\">6.1 概述：用来实现一个接口，本质是一个匿名函数</a></li>\n<li><a href=\"#62-%E6%9D%A1%E4%BB%B6\">6.2 条件：</a></li>\n<li><a href=\"#63-%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3\">6.3 函数式接口：</a></li>\n<li><a href=\"#64-functionalinterface\">6.4 @FunctionalInterface</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#47-%E5%B8%B8%E7%94%A8%E7%B1%BBapi\">47. 常用类(API)</a>\n<ul>\n<li><a href=\"#1-math%E7%B1%BB\">1. Math类</a></li>\n<li><a href=\"#2-random%E7%B1%BB\">2. Random类</a></li>\n<li><a href=\"#3-object%E7%B1%BB\">3. Object类</a></li>\n<li><a href=\"#4-scanner%E7%B1%BB\">4.  Scanner类</a></li>\n<li><a href=\"#5arrays%E7%B1%BB\">5.Arrays类</a></li>\n<li><a href=\"#6-system%E7%B1%BB\">6. System类</a></li>\n<li><a href=\"#7-collections%E7%B1%BB\">7. Collections类</a></li>\n</ul>\n</li>\n<li><a href=\"#48-string%E7%B1%BB\">48. String类</a>\n<ul>\n<li><a href=\"#1-%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95\">1. 构造方法</a></li>\n<li><a href=\"#2-%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%B8%B8%E9%87%8F%E6%B1%A0\">2. 字符串的常量池</a></li>\n<li><a href=\"#3-%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95\">3. 常用方法</a></li>\n</ul>\n</li>\n<li><a href=\"#49-stringbuffer%E7%B1%BB\">49. StringBuffer类</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E8%BF%B0-2\">1. 概述</a></li>\n<li><a href=\"#2-%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95\">2. 构造方法</a></li>\n<li><a href=\"#3-%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95-2\">3. 常用方法</a></li>\n</ul>\n</li>\n<li><a href=\"#50-stringbuilder\">50. StringBuilder</a></li>\n<li><a href=\"#51-string%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0\">51. String作为参数</a>\n<ul>\n<li><a href=\"#1-%E5%BD%A2%E5%BC%8F%E5%8F%82%E6%95%B0\">1. 形式参数</a></li>\n</ul>\n</li>\n<li><a href=\"#52-date%E7%B1%BB\">52. Date类</a></li>\n<li><a href=\"#53-dateformat\">53. DateFormat</a></li>\n<li><a href=\"#54-calendar%E7%B1%BB\">54. Calendar类</a></li>\n<li><a href=\"#55-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4\">55. 获取当前时间</a></li>\n<li><a href=\"#56-%E5%9F%BA%E6%9C%AC%E7%B1%BB%E5%9E%8B%E5%8C%85%E8%A3%85%E7%B1%BB\">56. 基本类型包装类</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E8%BF%B0-3\">1. 概述</a></li>\n<li><a href=\"#2-%E5%8C%85%E8%A3%85%E7%B1%BB\">2. 包装类</a></li>\n<li><a href=\"#3-integer\">3. Integer</a></li>\n<li><a href=\"#4-%E8%87%AA%E5%8A%A8%E6%8B%86%E7%AE%B1%E8%A3%85%E7%AE%B1\">4. 自动拆箱装箱</a></li>\n<li><a href=\"#5-character\">5. Character</a></li>\n<li><a href=\"#6-boolean\">6. Boolean</a></li>\n<li><a href=\"#7-double\">7. Double</a></li>\n</ul>\n</li>\n<li><a href=\"#57-%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\">57. 正则表达式</a>\n<ul>\n<li><a href=\"#1-%E6%A6%82%E8%BF%B0-4\">1. 概述</a></li>\n<li><a href=\"#2-%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E8%A7%84%E5%88%99\">2. 正则表达式的规则</a></li>\n<li><a href=\"#3-%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%BA%94%E7%94%A8\">3. 正则表达式的应用</a></li>\n</ul>\n</li>\n<li><a href=\"#58-biginteger\">58. BigInteger</a></li>\n<li><a href=\"#59-bigdecimal\">59. BigDecimal</a></li>\n<li><a href=\"#60-stringtokenizer\">60. StringTokenizer</a></li>\n<li><a href=\"#61-%E9%9B%86%E5%90%88\">61. 集合</a>\n<ul>\n<li><a href=\"#%E4%B8%80-collection%E9%9B%86%E5%90%88%E9%A1%B6%E5%B1%82%E6%8E%A5%E5%8F%A3\">一. Collection集合（顶层接口）</a>\n<ul>\n<li><a href=\"#1-list%E6%8E%A5%E5%8F%A3%E7%BB%A7%E6%89%BF%E8%87%AAcollection%E6%8E%A5%E5%8F%A3jdk12%E5%88%97%E8%A1%A8\">1. List接口（继承自Collection接口，JDK1.2）【列表】</a></li>\n<li><a href=\"#2-set%E6%8E%A5%E5%8F%A3%E7%BB%A7%E6%89%BF%E8%87%AAcollection%E6%8E%A5%E5%8F%A3jdk12%E9%9B%86%E5%90%88\">2. Set接口（继承自Collection接口，JDK1.2）【集合】</a></li>\n<li><a href=\"#3-queue%E6%8E%A5%E5%8F%A3%E7%BB%A7%E6%89%BF%E8%87%AAcollection%E6%8E%A5%E5%8F%A3jdk15%E9%98%9F%E5%88%97\">3. Queue接口（继承自Collection接口，JDK1.5）【队列】</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-map%E9%9B%86%E5%90%88%E9%A1%B6%E5%B1%82%E6%8E%A5%E5%8F%A3\">二. Map集合（顶层接口）</a></li>\n<li><a href=\"#%E4%B8%89-iterator%E8%BF%AD%E4%BB%A3%E5%99%A8\">三. Iterator迭代器</a></li>\n<li><a href=\"#%E5%9B%9B-spliterator%E6%8E%A5%E5%8F%A3jdk18\">四. Spliterator接口（JDK1.8）</a></li>\n<li><a href=\"#%E4%BA%94-listiterator%E6%8E%A5%E5%8F%A3jdk12\">五. ListIterator接口（JDK1.2）</a></li>\n</ul>\n</li>\n<li><a href=\"#62-arraylist%E5%8F%AF%E5%8F%98%E6%95%B0%E7%BB%84\">62. ArrayList可变数组</a>\n<ul>\n<li><a href=\"#1-%E6%A0%BC%E5%BC%8F\">1. 格式：</a></li>\n<li><a href=\"#2-%E5%90%91%E9%9B%86%E5%90%88%E4%B8%AD%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%BA%9B%E6%95%B0%E6%8D%AE%E9%9C%80%E8%A6%81%E7%94%A8%E5%88%B0add%E6%96%B9%E6%B3%95\">2. 向集合中添加一些数据，需要用到add方法</a></li>\n<li><a href=\"#3-%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95-3\">3. 常用方法</a></li>\n<li><a href=\"#4-%E9%81%8D%E5%8E%86arraylist%E9%9B%86%E5%90%88\">4. 遍历ArrayList集合</a></li>\n<li><a href=\"#5-arraylist%E5%AD%98%E5%82%A8%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B\">5. ArrayList存储基本数据类型</a></li>\n<li><a href=\"#6-arraylist%E7%9A%84%E9%81%8D%E5%8E%86%E4%B8%89%E7%A7%8D\">6. ArrayList的遍历(三种)</a></li>\n</ul>\n</li>\n<li><a href=\"#63-linkedlist\">63. LinkedList</a><br>\n*\n<ul>\n<li><a href=\"#1-%E6%A0%BC%E5%BC%8F-2\">1. 格式：</a></li>\n<li><a href=\"#2-%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95\">2. 常用方法：</a></li>\n</ul>\n</li>\n<li><a href=\"#64-vector\">64. Vector</a><br>\n*\n<ul>\n<li><a href=\"#1-%E6%A0%BC%E5%BC%8F-3\">1. 格式：</a></li>\n<li><a href=\"#2-%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95-2\">2. 常用方法：</a></li>\n</ul>\n</li>\n<li><a href=\"#65-enumerationjavautil%E4%B8%AD%E7%9A%84%E6%8E%A5%E5%8F%A3%E7%8E%B0%E5%B7%B2%E8%A2%ABiterator%E5%8F%96%E4%BB%A3%E4%B8%8Eenum%E6%B2%A1%E6%9C%89%E5%85%B3%E7%B3%BB\">65. Enumeration：java.util中的接口，现已被Iterator取代，与enum没有关系</a></li>\n<li><a href=\"#66-%E6%B3%9B%E5%9E%8B\">66. 泛型</a><br>\n*\n<ul>\n<li><a href=\"#1-%E6%B3%9B%E5%9E%8B%E7%B1%BB\">1. 泛型类</a></li>\n<li><a href=\"#2-%E6%B3%9B%E5%9E%8B%E6%96%B9%E6%B3%95\">2. 泛型方法</a></li>\n<li><a href=\"#3-%E6%B3%9B%E5%9E%8B%E6%8E%A5%E5%8F%A3\">3. 泛型接口</a></li>\n<li><a href=\"#4-%E6%B3%9B%E5%9E%8B%E6%8A%BD%E8%B1%A1%E7%B1%BB\">4. 泛型抽象类</a></li>\n<li><a href=\"#5-%E6%B3%9B%E5%9E%8B%E9%80%9A%E9%85%8D%E7%AC%A6\">5. 泛型通配符</a></li>\n</ul>\n</li>\n<li><a href=\"#67-%E5%A2%9E%E5%BC%BAfor%E5%BE%AA%E7%8E%AF\">67. 增强for循环</a></li>\n<li><a href=\"#68-%E9%9D%99%E6%80%81%E5%AF%BC%E5%85%A5\">68. 静态导入</a></li>\n<li><a href=\"#69-%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0\">69. 可变参数</a></li>\n<li><a href=\"#70-treeset\">70. TreeSet</a></li>\n<li><a href=\"#71-hashset\">71. HashSet</a></li>\n<li><a href=\"#72-linkedhashset\">72. LinkedHashSet</a></li>\n<li><a href=\"#73-hashmap\">73. HashMap</a></li>\n<li><a href=\"#74linkedhashmap\">74.LinkedHashMap</a></li>\n<li><a href=\"#75-treemap\">75. TreeMap</a></li>\n<li><a href=\"#76-%E5%BC%82%E5%B8%B8\">76. 异常</a>\n<ul>\n<li><a href=\"#1-%E5%88%86%E7%B1%BB\">1. 分类</a></li>\n<li><a href=\"#2-%E5%A4%84%E7%90%86%E5%BC%82%E5%B8%B8\">2. 处理异常</a></li>\n<li><a href=\"#3-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8\">3. 自定义异常</a></li>\n</ul>\n</li>\n<li><a href=\"#77-io%E6%B5%81\">77. I/O流</a>\n<ul>\n<li><a href=\"#1-file%E7%B1%BB%E8%B7%AF%E5%BE%84%E5%90%8D%E7%9A%84%E8%A1%A8%E7%A4%BA%E5%BD%A2%E5%BC%8F%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E8%BF%98%E4%B8%8D%E4%B8%80%E5%AE%9A\">1. File类（路径名的表示形式，文件是否存在还不一定）</a></li>\n<li><a href=\"#2-%E9%80%92%E5%BD%92\">2. 递归</a></li>\n<li><a href=\"#3-%E5%AD%97%E8%8A%82%E6%B5%81%E4%B8%87%E8%83%BD%E7%9A%84%E6%B5%81\">3. 字节流（万能的流）</a>\n<ul>\n<li><a href=\"#31-%E5%AD%97%E8%8A%82%E8%BE%93%E5%85%A5%E6%B5%81javaioinputstream%E6%8A%BD%E8%B1%A1%E7%B1%BB\">3.1 字节输入流(java.io.InputStream抽象类)</a></li>\n<li><a href=\"#32-%E5%AD%97%E8%8A%82%E8%BE%93%E5%87%BA%E6%B5%81javaiooutputstream%E6%8A%BD%E8%B1%A1%E7%B1%BB\">3.2 字节输出流(java.io.OutputStream抽象类)</a></li>\n<li><a href=\"#33-%E5%AD%97%E8%8A%82%E7%BC%93%E5%86%B2%E6%B5%81%E6%8F%90%E9%AB%98fileinputstream%E7%9A%84%E8%AF%BB%E5%86%99%E6%95%88%E7%8E%87%E8%A3%85%E9%A5%B0%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F\">3.3 字节缓冲流（提高FileInputStream的读写效率）装饰设计模式</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E5%AD%97%E7%AC%A6%E6%B5%81%E4%B8%BA%E4%BA%86%E6%93%8D%E4%BD%9C%E6%96%87%E6%9C%AC%E6%95%B0%E6%8D%AEjava%E6%8F%90%E4%BE%9B%E4%BA%86%E5%AD%97%E7%AC%A6%E6%B5%81%E5%B0%86%E5%AD%97%E8%8A%82%E6%B5%81%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%AD%97%E7%AC%A6%E6%B5%81\">4. 字符流（为了操作文本数据，Java提供了字符流，将字节流转换为字符流）</a>\n<ul>\n<li><a href=\"#41-%E5%AD%97%E7%AC%A6%E8%BE%93%E5%85%A5%E6%B5%81javaioreader\">4.1 字符输入流(java.io.Reader)</a></li>\n<li><a href=\"#42-%E5%AD%97%E7%AC%A6%E8%BE%93%E5%87%BA%E6%B5%81javaiowriter\">4.2 字符输出流(java.io.Writer)</a></li>\n<li><a href=\"#43-%E8%BD%AC%E6%8D%A2%E6%B5%81%E7%AE%80%E5%8C%96%E5%86%99%E6%B3%95\">4.3 转换流简化写法</a></li>\n<li><a href=\"#44-%E5%AD%97%E7%AC%A6%E7%BC%93%E5%86%B2%E6%B5%81\">4.4 字符缓冲流</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E6%89%93%E5%8D%B0%E6%B5%81%E5%8F%AA%E6%9C%89%E5%86%99%E6%95%B0%E6%8D%AE%E7%9A%84%E6%B2%A1%E6%9C%89%E8%AF%BB%E6%95%B0%E6%8D%AE%E7%9A%84\">5. 打印流（只有写数据的没有读数据的）</a>\n<ul>\n<li><a href=\"#51-%E5%AD%97%E8%8A%82%E6%89%93%E5%8D%B0%E6%B5%81javaioprintstream\">5.1 字节打印流（java.io.PrintStream）</a></li>\n<li><a href=\"#52-%E5%AD%97%E7%AC%A6%E6%89%93%E5%8D%B0%E6%B5%81javaioprintwriter\">5.2 字符打印流（java.io.PrintWriter）</a></li>\n<li><a href=\"#53-%E7%89%B9%E7%82%B9\">5.3 特点：</a></li>\n</ul>\n</li>\n<li><a href=\"#6-%E5%BA%8F%E5%88%97%E5%8C%96%E6%B5%81\">6. 序列化流</a>\n<ul>\n<li><a href=\"#61-objectoutputstream%E5%BA%8F%E5%88%97%E5%8C%96\">6.1 ObjectOutputStream（序列化）</a></li>\n<li><a href=\"#62-objectinputstream%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96\">6.2 ObjectInputStream（反序列化）</a></li>\n</ul>\n</li>\n<li><a href=\"#serialversionuid%E5%92%8Ctransient\">serialVersionUID和transient</a></li>\n<li><a href=\"#7-%E7%89%B9%E6%AE%8A%E6%93%8D%E4%BD%9C%E6%B5%81\">7. 特殊操作流</a>\n<ul>\n<li><a href=\"#71-properties\">7.1 Properties</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#78-%E5%A4%9A%E7%BA%BF%E7%A8%8B\">78. 多线程</a>\n<ul>\n<li><a href=\"#1-%E8%BF%9B%E7%A8%8B%E7%B3%BB%E7%BB%9F%E8%B5%84%E6%BA%90%E5%88%86%E9%85%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E5%8D%95%E4%BD%8D\">1. 进程：系统资源分配的最小单位</a></li>\n<li><a href=\"#2-%E7%BA%BF%E7%A8%8B%E6%98%AF%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%89%A7%E8%A1%8C%E5%8D%95%E5%85%83%E6%98%AFcpu%E8%B0%83%E5%BA%A6%E7%9A%84%E6%9C%80%E5%B0%8F%E5%8D%95%E4%BD%8D\">2. 线程：是进程的执行单元，是CPU调度的最小单位</a></li>\n<li><a href=\"#3-%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F\">3. 多线程实现方式</a>\n<ul>\n<li><a href=\"#31-%E7%BB%A7%E6%89%BFthread%E7%B1%BBjavalangthread\">3.1 继承Thread类（java.lang.Thread）</a></li>\n<li><a href=\"#32-%E5%AE%9E%E7%8E%B0runnable%E6%8E%A5%E5%8F%A3javalangrunnable\">3.2 实现Runnable接口（java.lang.Runnable）</a></li>\n<li><a href=\"#33-%E5%AE%9E%E7%8E%B0callable%E6%8E%A5%E5%8F%A3javautilconcurrentcallable\">3.3 实现Callable接口（java.util.concurrent.Callable）</a></li>\n<li><a href=\"#34-%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB%E5%AE%9E%E7%8E%B0%E5%A4%9A%E7%BA%BF%E7%A8%8B\">3.4 匿名内部类实现多线程</a></li>\n</ul>\n</li>\n<li><a href=\"#4-%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5\">4. 线程同步</a>\n<ul>\n<li><a href=\"#41-%E5%87%BA%E7%8E%B0%E4%BA%86%E9%97%AE%E9%A2%98%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%95%B0%E6%8D%AE%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98\">4.1 出现了问题（多线程数据安全问题）</a></li>\n<li><a href=\"#42-%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95\">4.2 解决办法</a></li>\n</ul>\n</li>\n<li><a href=\"#5-%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E7%9A%84%E7%B1%BB\">5. 线程安全的类</a>\n<ul>\n<li><a href=\"#51-stringbuffer%E5%9C%A8%E5%A4%9A%E7%BA%BF%E7%A8%8B%E4%B8%AD%E4%BC%9A%E8%A2%AB%E4%BD%BF%E7%94%A8%E5%88%B0\">5.1 StringBuffer(在多线程中会被使用到)</a></li>\n<li><a href=\"#52-vector%E4%B8%8D%E5%B8%B8%E8%A2%AB%E4%BD%BF%E7%94%A8\">5.2 Vector（不常被使用）</a></li>\n<li><a href=\"#53-hashtable%E4%B8%8D%E5%B8%B8%E8%A2%AB%E4%BD%BF%E7%94%A8\">5.3 Hashtable（不常被使用）</a></li>\n</ul>\n</li>\n<li><a href=\"#6-%E9%94%81lockjdk15\">6. 锁Lock（JDK1.5）</a></li>\n<li><a href=\"#7-%E6%AD%BB%E9%94%81%E9%97%AE%E9%A2%98\">7. 死锁问题</a>\n<ul>\n<li><a href=\"#71-%E5%90%8C%E6%AD%A5%E5%BC%8A%E7%AB%AF\">7.1 同步弊端</a></li>\n<li><a href=\"#72-%E6%AD%BB%E9%94%81%E7%9A%84%E4%BA%A7%E7%94%9F\">7.2 死锁的产生</a></li>\n<li><a href=\"#73-%E6%AD%BB%E9%94%81%E7%9A%84%E8%A7%A3%E5%86%B3\">7.3 死锁的解决</a></li>\n</ul>\n</li>\n<li><a href=\"#8-%E7%BA%BF%E7%A8%8B%E9%97%B4%E7%9A%84%E9%80%9A%E4%BF%A1%E7%AD%89%E5%BE%85%E5%94%A4%E9%86%92%E6%9C%BA%E5%88%B6\">8. 线程间的通信（等待唤醒机制）</a>\n<ul>\n<li><a href=\"#81-%E6%A6%82%E8%BF%B0\">8.1 概述</a></li>\n<li><a href=\"#82-%E7%AD%89%E5%BE%85%E5%94%A4%E9%86%92%E6%9C%BA%E5%88%B6\">8.2 等待唤醒机制</a></li>\n<li><a href=\"#83-%E7%94%9F%E4%BA%A7%E8%80%85%E6%B6%88%E8%B4%B9%E8%80%85%E9%97%AE%E9%A2%98\">8.3 生产者消费者问题</a></li>\n</ul>\n</li>\n<li><a href=\"#9-%E7%BA%BF%E7%A8%8B%E6%B1%A0\">9. 线程池</a></li>\n<li><a href=\"#10-%E7%BA%BF%E7%A8%8B%E7%BB%84\">10. 线程组</a></li>\n<li><a href=\"#11-%E5%AE%9A%E6%97%B6%E5%99%A8\">11. 定时器</a>\n<ul>\n<li><a href=\"#111-%E7%B1%BBjavautiltimer-%E5%92%8C-javautiltimertask\">11.1 类：java.util.Timer 和 java.util.TimerTask</a></li>\n</ul>\n</li>\n<li><a href=\"#12-%E5%B0%8F%E7%BB%93\">12. 小结</a></li>\n</ul>\n</li>\n<li><a href=\"#79-%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B\">79. 网络编程</a>\n<ul>\n<li><a href=\"#1-%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C\">1. 计算机网络</a></li>\n<li><a href=\"#2-%E7%BD%91%E7%BB%9C%E6%A8%A1%E5%9E%8Bosi\">2. 网络模型（OSI）</a></li>\n<li><a href=\"#3-%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE\">3. 通信协议</a></li>\n<li><a href=\"#4-ip%E5%9C%B0%E5%9D%80%E4%B8%8E%E7%AB%AF%E5%8F%A3%E5%8F%B7\">4. IP地址与端口号</a></li>\n<li><a href=\"#5-java%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B\">5. Java网络编程</a>\n<ul>\n<li><a href=\"#51-inetaddress\">5.1 InetAddress</a></li>\n<li><a href=\"#52-socket%E7%BC%96%E7%A8%8B\">5.2 Socket编程</a></li>\n<li><a href=\"#53-udp%E5%8D%8F%E8%AE%AE%E5%8F%91%E9%80%81%E6%8E%A5%E6%94%B6%E6%95%B0%E6%8D%AE\">5.3 UDP协议发送接收数据</a></li>\n<li><a href=\"#54-tcp%E5%8D%8F%E8%AE%AE%E5%8F%91%E9%80%81%E6%8E%A5%E6%94%B6%E6%95%B0%E6%8D%AE\">5.4 TCP协议发送接收数据</a></li>\n</ul>\n</li>\n<li><a href=\"#6-%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B\">6. 网络编程模型</a>\n<ul>\n<li><a href=\"#61-bio%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B%E5%90%8C%E6%AD%A5%E9%98%BB%E5%A1%9E%E7%9A%84bioblocking-io\">6.1 BIO网络编程模型（同步阻塞的BIO）【Blocking I/O】</a></li>\n<li><a href=\"#62-nio%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B%E5%90%8C%E6%AD%A5%E9%9D%9E%E9%98%BB%E5%A1%9Enionon-blocking-io\">6.2 NIO网络编程模型（同步非阻塞NIO）【Non-blocking I/O】</a></li>\n<li><a href=\"#63-aio%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B%E5%BC%82%E6%AD%A5%E9%9D%9E%E9%98%BB%E5%A1%9Eaio\">6.3 AIO网络编程模型（异步非阻塞AIO）</a></li>\n</ul>\n</li>\n<li><a href=\"#7-nio\">7. NIO</a>\n<ul>\n<li><a href=\"#71-nio%E4%B8%8E%E4%BC%A0%E7%BB%9Fio%E7%9A%84%E5%8C%BA%E5%88%AB\">7.1 NIO与传统IO的区别</a></li>\n<li><a href=\"#72-%E9%80%9A%E9%81%93channel%E5%92%8C%E7%BC%93%E5%86%B2%E5%8C%BAbuffer\">7.2 通道（Channel）和缓冲区（Buffer）</a></li>\n<li><a href=\"#73-%E7%BC%93%E5%86%B2%E5%8C%BAbuffer\">7.3 缓冲区（Buffer）</a></li>\n<li><a href=\"#74-%E9%80%9A%E9%81%93channel\">7.4 通道（Channel）</a></li>\n<li><a href=\"#75-%E5%AD%97%E7%AC%A6%E9%9B%86charset\">7.5 字符集（Charset）</a></li>\n<li><a href=\"#76-nio%E7%9A%84%E9%9D%9E%E9%98%BB%E5%A1%9E%E7%AE%80%E8%BF%B0\">7.6 NIO的非阻塞简述</a></li>\n<li><a href=\"#77-nio%E9%98%BB%E5%A1%9E%E5%BC%8F%E7%BC%96%E7%A8%8B\">7.7 NIO阻塞式编程</a></li>\n<li><a href=\"#78-nio%E9%9D%9E%E9%98%BB%E5%A1%9E%E5%BC%8F%E7%BC%96%E7%A8%8B\">7.8 NIO非阻塞式编程</a></li>\n<li><a href=\"#79-%E7%AE%A1%E9%81%93pipe\">7.9 管道（Pipe）</a></li>\n<li><a href=\"#72-selector%E9%80%89%E6%8B%A9%E5%99%A8%E5%A4%9A%E8%B7%AF%E5%A4%8D%E7%94%A8%E5%99%A8\">7.2 Selector：选择器/多路复用器</a></li>\n<li><a href=\"#74-nio%E7%BC%96%E7%A8%8B%E5%AE%9E%E7%8E%B0%E6%AD%A5%E9%AA%A4\">7.4 NIO编程实现步骤</a></li>\n<li><a href=\"#75-nio%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%AE%9E%E6%88%98\">7.5 NIO网络编程实战</a></li>\n<li><a href=\"#76-%E5%88%86%E6%95%A3%E8%AF%BB%E5%8F%96scatter%E5%92%8C%E8%81%9A%E9%9B%86%E5%86%99%E5%85%A5gather\">7.6 分散读取Scatter和聚集写入Gather</a></li>\n<li><a href=\"#77-%E7%BC%96%E8%A7%A3%E7%A0%81\">7.7 编解码</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"#80-%E5%8F%8D%E5%B0%84%E5%92%8C%E6%B3%A8%E8%A7%A3\">80. 反射和注解</a>\n<ul>\n<li><a href=\"#1-%E5%8F%8D%E5%B0%84\">1. 反射</a>\n<ul>\n<li><a href=\"#11-%E7%B1%BB%E5%8A%A0%E8%BD%BD\">1.1 类加载</a></li>\n<li><a href=\"#12-%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%99%A8\">1.2 类加载器</a></li>\n<li><a href=\"#13-%E5%8F%8D%E5%B0%84\">1.3 反射</a></li>\n<li><a href=\"#14-%E5%8F%8D%E5%B0%84%E7%BB%83%E4%B9%A0\">1.4 反射练习</a></li>\n</ul>\n</li>\n<li><a href=\"#2-%E6%B3%A8%E8%A7%A3\">2. 注解</a>\n<ul>\n<li><a href=\"#21-%E6%A6%82%E8%BF%B0\">2.1 概述：</a></li>\n<li><a href=\"#22-jdk%E9%A2%84%E5%AE%9A%E4%B9%89%E6%B3%A8%E8%A7%A3\">2.2 JDK预定义注解</a></li>\n<li><a href=\"#23-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B3%A8%E8%A7%A3\">2.3 自定义注解</a></li>\n<li><a href=\"#24-%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0\">2.4 代码实现</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-03-18 22:47:58","dateFormat":"2021-03-18"},{"fileName":"IW8mQ0Bvy","abstract":"","description":"一、B站API 1. 热门搜索API https://s.search.bilibili.com/main/hotword?mid=&amp;buvid=034F9BB5-4350-41BB-90DC-24287F103A7D138368...","title":"常用API收集（第一期：2021.2.19）","tags":[{"name":"API","slug":"Ts0Iy_kql","used":true,"link":"https://zydnc.gitee.io/Ts0Iy_kql/"},{"name":"常用API收集","slug":"85mF2tlWY2","used":true,"link":"https://zydnc.gitee.io/85mF2tlWY2/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E5%B8%B8%E7%94%A8API.jpg","link":"https://zydnc.gitee.io/IW8mQ0Bvy/","stats":{"text":"3 min read","time":134000,"words":497,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-b%E7%AB%99api\">一、B站API</a>\n<ul>\n<li><a href=\"#1-%E7%83%AD%E9%97%A8%E6%90%9C%E7%B4%A2api\">1. 热门搜索API</a></li>\n<li><a href=\"#2-%E8%8E%B7%E5%8F%96%E8%A7%86%E9%A2%91%E4%BF%A1%E6%81%AFapi\">2. 获取视频信息API</a></li>\n<li><a href=\"#3-%E8%8E%B7%E5%8F%96%E5%BC%B9%E5%B9%95api\">3. 获取弹幕API</a></li>\n<li><a href=\"#4-%E8%8E%B7%E5%8F%96%E8%A7%86%E9%A2%91cidapi\">4. 获取视频cidAPI</a></li>\n<li><a href=\"#5-b%E7%AB%99%E6%AF%8F%E6%97%A5%E6%8E%92%E8%A1%8C%E6%A6%9Capi\">5. B站每日排行榜API</a></li>\n<li><a href=\"#6-b%E7%AB%99%E5%85%A5%E7%AB%99%E5%BF%85%E5%88%B7%E6%A6%9C%E5%8D%95api\">6. B站入站必刷榜单API</a></li>\n<li><a href=\"#7-b%E7%AB%99%E6%AF%8F%E5%91%A8%E5%BF%85%E7%9C%8Bapi\">7. B站每周必看API</a></li>\n<li><a href=\"#8-b%E7%AB%99%E5%B0%8F%E9%BB%91%E5%B1%8Bapi\">8. B站小黑屋API</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-%E7%9F%A5%E4%B9%8Eapi\">二、 知乎API</a>\n<ul>\n<li><a href=\"#1-%E7%9F%A5%E4%B9%8E%E6%AF%8F%E6%97%A5%E7%83%AD%E6%A6%9Capi\">1. 知乎每日热榜API</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-02-19 15:46:23","dateFormat":"2021-02-19"},{"fileName":"wN4eqwrOE","abstract":"","description":"一、代码实现 public class CircularArrayQueue { /** * 队列最大容量 */ private int maxSize; /** * 队列头指针（指向首...","title":"数组模拟实现循环队列","tags":[{"name":"队列","slug":"rSXZQNF6u","used":true,"link":"https://zydnc.gitee.io/rSXZQNF6u/"},{"name":"Queue","slug":"Jmoa1nmmcE","used":true,"link":"https://zydnc.gitee.io/Jmoa1nmmcE/"},{"index":-1,"name":"数据结构","slug":"datastructure","used":true,"link":"https://zydnc.gitee.io/datastructure/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.jpg","link":"https://zydnc.gitee.io/wN4eqwrOE/","stats":{"text":"2 min read","time":95000,"words":343,"minutes":2},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0\">一、代码实现</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-02-02 21:19:34","dateFormat":"2021-02-02"},{"fileName":"IjOXWGTmT","abstract":"","description":"一、队列 特点：先入先出 分析：因为队列队首队尾都可以操作，所以需要两个变量模拟指针 front 和 rear 分别指向首元素的前一个位置和尾元素，使用数组实现队列 入队列：rear后移，元素入队 出队列：front后移，元素出队 二、...","title":"数组模拟实现队列","tags":[{"name":"队列","slug":"rSXZQNF6u","used":true,"link":"https://zydnc.gitee.io/rSXZQNF6u/"},{"name":"Queue","slug":"Jmoa1nmmcE","used":true,"link":"https://zydnc.gitee.io/Jmoa1nmmcE/"},{"index":-1,"name":"数据结构","slug":"datastructure","used":true,"link":"https://zydnc.gitee.io/datastructure/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.jpg","link":"https://zydnc.gitee.io/IjOXWGTmT/","stats":{"text":"3 min read","time":151000,"words":546,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E9%98%9F%E5%88%97\">一、队列</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0\">二、代码实现</a></li>\n<li><a href=\"#%E4%B8%89-%E6%B5%8B%E8%AF%95%E9%98%9F%E5%88%97%E5%8A%9F%E8%83%BD\">三、测试队列功能</a></li>\n<li><a href=\"#%E5%9B%9B-%E6%8E%A7%E5%88%B6%E5%8F%B0%E7%BB%93%E6%9E%9C\">四、控制台结果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-02-01 20:55:27","dateFormat":"2021-02-01"},{"fileName":"ZZGM9B12P","abstract":"","description":"一、导入Jackson依赖 为了将对象序列化为XML文件，将XML反序列化为对象 &lt;dependency&gt; &lt;groupId&gt;com.fasterxml.jackson.dataformat&lt;/gr...","title":"稀疏数组实现棋盘存储与恢复","tags":[{"index":-1,"name":"数据结构","slug":"datastructure","used":true,"link":"https://zydnc.gitee.io/datastructure/"},{"name":"稀疏数组","slug":"4Qa1Vqi9a","used":true,"link":"https://zydnc.gitee.io/4Qa1Vqi9a/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.jpg","link":"https://zydnc.gitee.io/ZZGM9B12P/","stats":{"text":"8 min read","time":421000,"words":1253,"minutes":8},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%AF%BC%E5%85%A5jackson%E4%BE%9D%E8%B5%96\">一、导入Jackson依赖</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%88%9B%E5%BB%BA%E6%A3%8B%E7%9B%98%E6%95%B0%E6%8D%AE%E4%BF%A1%E6%81%AFbean%E5%AF%B9%E8%B1%A1\">二、创建棋盘数据信息Bean对象</a></li>\n<li><a href=\"#%E4%B8%89-%E5%AE%9E%E7%8E%B0%E6%A3%8B%E7%9B%98%E5%AD%98%E5%82%A8%E4%B8%8E%E6%81%A2%E5%A4%8D\">三、实现棋盘存储与恢复</a></li>\n<li><a href=\"#%E5%9B%9B-%E6%9F%A5%E7%9C%8B%E5%AD%98%E5%82%A8%E7%9A%84%E6%A3%8B%E5%B1%80\">四、查看存储的棋局</a></li>\n<li><a href=\"#%E4%BA%94-%E6%8E%A7%E5%88%B6%E5%8F%B0%E6%89%93%E5%8D%B0%E7%BB%93%E6%9E%9C\">五、控制台打印结果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-02-01 16:07:56","dateFormat":"2021-02-01"},{"fileName":"WvJdcATYk","abstract":"","description":" redis是一款高性能的NOSQL系列的非关系型数据库（key-value） 官网：https://redis.io/ 中文网：https://www.redis.net.cn/ 一、非关系型数据库 1. 特点 数据之间没有关联关系 ...","title":"Redis数据库简单学习","tags":[{"index":-1,"name":"Redis","slug":"redis","used":true,"link":"https://zydnc.gitee.io/redis/"},{"name":"数据库","slug":"t-6x5ylCi","used":true,"link":"https://zydnc.gitee.io/t-6x5ylCi/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"}],"feature":"http://pic.zyblog.xyz/blog/poster/redis.jpg","link":"https://zydnc.gitee.io/WvJdcATYk/","stats":{"text":"10 min read","time":574000,"words":2123,"minutes":10},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93\">一、非关系型数据库</a>\n<ul>\n<li><a href=\"#1-%E7%89%B9%E7%82%B9\">1. 特点</a></li>\n<li><a href=\"#2-%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98\">2. 解决的问题</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-redis%E6%95%B0%E6%8D%AE%E5%BA%93\">二、Redis数据库</a>\n<ul>\n<li><a href=\"#1-%E4%B8%8B%E8%BD%BD\">1. 下载</a></li>\n<li><a href=\"#2-%E5%AE%89%E8%A3%85\">2. 安装</a></li>\n<li><a href=\"#3-%E9%85%8D%E7%BD%AE\">3. 配置</a></li>\n<li><a href=\"#4-%E4%BD%BF%E7%94%A8\">4. 使用</a></li>\n<li><a href=\"#5-redis%E7%9A%84%E5%AD%A6%E4%B9%A0\">5. Redis的学习</a></li>\n<li><a href=\"#6-%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%B1%BB%E5%9E%8B\">6. 字符串类型</a></li>\n<li><a href=\"#7-%E5%93%88%E5%B8%8C%E7%B1%BB%E5%9E%8B\">7. 哈希类型</a></li>\n<li><a href=\"#8-%E5%88%97%E8%A1%A8%E7%B1%BB%E5%9E%8B%E5%8F%AF%E9%87%8D%E5%A4%8D\">8. 列表类型（可重复）</a></li>\n<li><a href=\"#9-%E9%9B%86%E5%90%88%E7%B1%BB%E5%9E%8B%E6%97%A0%E9%87%8D%E5%A4%8D\">9. 集合类型（无重复）</a></li>\n<li><a href=\"#10-%E6%9C%89%E5%BA%8F%E9%9B%86%E5%90%88%E7%B1%BB%E5%9E%8B%E6%9C%89%E5%BA%8F%E6%97%A0%E9%87%8D%E5%A4%8D\">10. 有序集合类型（有序无重复）</a></li>\n<li><a href=\"#11-%E9%80%9A%E7%94%A8%E5%91%BD%E4%BB%A4\">11. 通用命令</a></li>\n<li><a href=\"#12-%E6%8C%81%E4%B9%85%E5%8C%96\">12. 持久化</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-java%E6%93%8D%E4%BD%9Credis\">三、Java操作Redis</a>\n<ul>\n<li><a href=\"#1-jedis\">1. Jedis</a></li>\n<li><a href=\"#2-jedis%E6%93%8D%E4%BD%9C5%E7%A7%8Dredis%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84\">2. Jedis操作5种Redis数据结构</a></li>\n<li><a href=\"#3-string%E7%B1%BB%E5%9E%8B%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95\">3. String类型常用方法</a></li>\n<li><a href=\"#4-hash%E7%B1%BB%E5%9E%8B%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95\">4. Hash类型常用方法</a></li>\n<li><a href=\"#5-list%E7%B1%BB%E5%9E%8B%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95\">5. List类型常用方法</a></li>\n<li><a href=\"#6-set%E7%B1%BB%E5%9E%8B%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95\">6. Set类型常用方法</a></li>\n<li><a href=\"#7-sortedset%E7%B1%BB%E5%9E%8B%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95\">7. SortedSet类型常用方法</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%9B%9B-jedis%E8%BF%9E%E6%8E%A5%E6%B1%A0\">四、Jedis连接池</a>\n<ul>\n<li><a href=\"#1-jedispool\">1. JedisPool</a></li>\n<li><a href=\"#2-jedispool%E5%B7%A5%E5%85%B7%E7%B1%BB\">2. JedisPool工具类</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-31 18:23:30","dateFormat":"2021-01-31"},{"fileName":"3g0TLSILu","abstract":"","description":"一、写个简单的HTML页面 &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;...","title":"JS原生实现简单ajax请求","tags":[{"index":-1,"name":"Ajax","slug":"ajax","used":true,"link":"https://zydnc.gitee.io/ajax/"},{"index":-1,"name":"JS","slug":"js","used":true,"link":"https://zydnc.gitee.io/js/"},{"index":-1,"name":"HTTP","slug":"http","used":true,"link":"https://zydnc.gitee.io/http/"}],"feature":"http://pic.zyblog.xyz/blog/poster/ajax.jpg","link":"https://zydnc.gitee.io/3g0TLSILu/","stats":{"text":"5 min read","time":274000,"words":901,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%86%99%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84html%E9%A1%B5%E9%9D%A2\">一、写个简单的HTML页面</a></li>\n<li><a href=\"#%E4%BA%8C-%E9%9A%8F%E4%BE%BF%E5%86%99%E7%82%B9css\">二、随便写点CSS</a></li>\n<li><a href=\"#%E4%B8%89-js%E5%8E%9F%E7%94%9F%E5%AE%9E%E7%8E%B0ajax\">三、JS原生实现Ajax</a></li>\n<li><a href=\"#%E5%9B%9B-%E5%86%99%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84servlet%E5%8E%BB%E5%93%8D%E5%BA%94ajax%E8%AF%B7%E6%B1%82\">四、写个简单的Servlet去响应ajax请求</a></li>\n<li><a href=\"#%E4%BA%94-%E6%9C%80%E7%BB%88%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA\">五、最终效果展示</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-31 11:05:14","dateFormat":"2021-01-31"},{"fileName":"fIrwGdZp7","abstract":"","description":"一、测试用的XML文件 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;bookstore&gt; &lt;book id=&quot;1&...","title":"Java原生实现DOM树解析XML文件","tags":[{"name":"XML","slug":"mDjn3cvfIJ","used":true,"link":"https://zydnc.gitee.io/mDjn3cvfIJ/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E7%BB%83%E4%B9%A0.jpg","link":"https://zydnc.gitee.io/fIrwGdZp7/","stats":{"text":"3 min read","time":124000,"words":373,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84xml%E6%96%87%E4%BB%B6\">一、测试用的XML文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E8%A7%A3%E6%9E%90xml%E6%96%87%E4%BB%B6\">二、解析XML文件</a></li>\n<li><a href=\"#%E4%B8%89-%E7%A8%8D%E5%BE%AE%E6%9C%89%E7%82%B9%E9%BA%BB%E7%83%A6%E4%BA%86%E5%BB%BA%E8%AE%AE%E4%BD%BF%E7%94%A8jsoup%E6%93%8D%E4%BD%9C%E6%9B%B4%E5%8A%A0%E6%96%B9%E4%BE%BF\">三、稍微有点麻烦了，建议使用Jsoup，操作更加方便</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-30 18:16:34","dateFormat":"2021-01-30"},{"fileName":"AqFeWp4vE","abstract":"","description":"一、导入JSTL标签库和EL表达式的依赖 &lt;dependency&gt; &lt;groupId&gt;javax.servlet.jsp.jstl&lt;/groupId&gt; &lt;artifactId&gt;...","title":"JSTL标签+EL表达式改进360影视采集练习案例","tags":[{"name":"练习","slug":"NhmdSaNuN","used":true,"link":"https://zydnc.gitee.io/NhmdSaNuN/"},{"name":"360影视","slug":"oPMSWE43i","used":true,"link":"https://zydnc.gitee.io/oPMSWE43i/"}],"feature":"http://pic.zyblog.xyz/blog/poster/JavaEE.png","link":"https://zydnc.gitee.io/AqFeWp4vE/","stats":{"text":"5 min read","time":242000,"words":720,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%AF%BC%E5%85%A5jstl%E6%A0%87%E7%AD%BE%E5%BA%93%E5%92%8Cel%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E4%BE%9D%E8%B5%96\">一、导入JSTL标签库和EL表达式的依赖</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%94%B9%E8%BF%9B%E4%B9%8B%E5%89%8D%E7%9A%84jsp%E9%A1%B5%E9%9D%A2\">二、改进之前的JSP页面</a></li>\n<li><a href=\"#%E4%B8%89-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C%E5%92%8C%E5%8E%9F%E6%9D%A5%E8%BF%98%E6%98%AF%E4%B8%80%E6%A8%A1%E4%B8%80%E6%A0%B7%E7%9A%84\">三、实际效果和原来还是一模一样的</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-30 08:49:59","dateFormat":"2021-01-30"},{"fileName":"360Video","abstract":"","description":"一、idea创建Maven管理的JavaWeb项目 二、创建一个用来封装影片数据的JavaBean对象 public class FilmInfo { private String name; private String ...","title":"JavaWeb阶段练习：360影视数据采集","tags":[{"name":"360影视","slug":"oPMSWE43i","used":true,"link":"https://zydnc.gitee.io/oPMSWE43i/"},{"name":"小练习","slug":"Z2yHQeB2g","used":true,"link":"https://zydnc.gitee.io/Z2yHQeB2g/"}],"feature":"http://pic.zyblog.xyz/blog/poster/JavaEE.png","link":"https://zydnc.gitee.io/360Video/","stats":{"text":"12 min read","time":699000,"words":2059,"minutes":12},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-idea%E5%88%9B%E5%BB%BAmaven%E7%AE%A1%E7%90%86%E7%9A%84javaweb%E9%A1%B9%E7%9B%AE\">一、idea创建Maven管理的JavaWeb项目</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%94%A8%E6%9D%A5%E5%B0%81%E8%A3%85%E5%BD%B1%E7%89%87%E6%95%B0%E6%8D%AE%E7%9A%84javabean%E5%AF%B9%E8%B1%A1\">二、创建一个用来封装影片数据的JavaBean对象</a></li>\n<li><a href=\"#%E4%B8%89-%E4%BD%BF%E7%94%A8%E4%BA%86-gson-%E5%92%8C-httputils-%E7%9A%84%E4%BE%9D%E8%B5%96\">三、使用了 <code>Gson</code> 和 <code>HttpUtils</code> 的依赖</a>\n<ul>\n<li><a href=\"#1-gson%E7%9A%84maven%E4%BE%9D%E8%B5%96\">1. Gson的maven依赖</a></li>\n<li><a href=\"#2-httputils%E6%98%AF%E6%88%91%E6%89%8B%E5%86%99%E7%9A%84http%E5%B7%A5%E5%85%B7%E7%B1%BB%E9%87%8C%E9%9D%A2%E4%B8%BB%E8%A6%81%E5%8C%85%E5%90%AB3%E4%B8%AA%E6%96%B9%E6%B3%95get%E8%AF%B7%E6%B1%82post%E8%AF%B7%E6%B1%82%E8%BF%98%E6%9C%89%E9%87%87%E9%9B%86%E6%95%B0%E6%8D%AE%E7%9A%84getdata%E6%96%B9%E6%B3%95\">2. HttpUtils是我手写的Http工具类，里面主要包含3个方法，get请求，post请求，还有采集数据的getData方法</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%9B%9B-%E9%9A%8F%E4%BE%BF%E5%86%99%E4%B8%AA%E5%89%8D%E7%AB%AF%E9%A1%B5%E9%9D%A2\">四、随便写个前端页面</a>\n<ul>\n<li><a href=\"#1-jsp%E9%83%A8%E5%88%86\">1. JSP部分</a></li>\n<li><a href=\"#2-css%E9%83%A8%E5%88%86\">2. css部分</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%94-%E8%BF%90%E8%A1%8C%E8%B5%B7%E6%9D%A5%E7%9C%8B%E4%B8%80%E4%B8%8B%E6%95%88%E6%9E%9C\">五、运行起来看一下效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-29 18:31:11","dateFormat":"2021-01-29"},{"fileName":"Dw2rPiHYV","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; href=&quot;layui-v2.5.7/layui/css/layui.css&quot;&gt; &lt;script src=&quot;...","title":"LayUI学习（2）栅格系统","tags":[{"name":"LayUI","slug":"gbAGgIbfN","used":true,"link":"https://zydnc.gitee.io/gbAGgIbfN/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"}],"feature":"http://pic.zyblog.xyz/blog/poster/LayUI.jpg","link":"https://zydnc.gitee.io/Dw2rPiHYV/","stats":{"text":"5 min read","time":241000,"words":847,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%A0%85%E6%A0%BC%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%B8%83%E5%B1%80%E5%AE%B9%E5%99%A8-layui-container\">二、栅格系统的布局容器 <code>layui-container</code></a></li>\n<li><a href=\"#%E4%B8%89-%E6%A0%85%E6%A0%BC%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%A1%8C%E5%AE%B9%E5%99%A8-layui-row\">三、栅格系统的行容器 <code>layui-row</code></a></li>\n<li><a href=\"#%E5%9B%9B-%E6%A0%85%E6%A0%BC%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%A1%8C%E5%86%85%E7%A9%BA%E9%97%B4%E5%88%86%E9%85%8D-layui-col-md%E5%88%97%E6%95%B0\">四、栅格系统的行内空间分配 <code>layui-col-md列数</code></a></li>\n<li><a href=\"#%E4%BA%94-%E4%B8%BA%E6%A0%85%E6%A0%BC%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE%E5%88%97%E9%97%B4%E8%B7%9D-layui-col-space%E5%83%8F%E7%B4%A0\">五、为栅格系统设置列间距 <code>layui-col-space像素</code></a></li>\n<li><a href=\"#%E5%85%AD-%E4%B8%BA%E6%A0%85%E6%A0%BC%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE%E5%88%97%E5%81%8F%E7%A7%BB-layui-col-md-offset%E5%88%97%E6%95%B0\">六、为栅格系统设置列偏移 <code>layui-col-md-offset列数</code></a></li>\n<li><a href=\"#%E4%B8%83-%E6%A0%85%E6%A0%BC%E5%B5%8C%E5%A5%97\">七、栅格嵌套</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-22 22:21:31","dateFormat":"2021-01-22"},{"fileName":"ZeuH4X3iy","abstract":"","description":"一、准备一段测试用的Json文本 { &quot;age&quot; : 12, &quot;name&quot; : &quot;zhiyuan&quot;, &quot;gender&quot; : &quot;...","title":"JS正则实现Json文本压缩去除空格效果","tags":[{"index":-1,"name":"JS","slug":"js","used":true,"link":"https://zydnc.gitee.io/js/"},{"name":"Regex","slug":"NQ4hTFbHKX","used":true,"link":"https://zydnc.gitee.io/NQ4hTFbHKX/"},{"name":"正则表达式","slug":"RTDPTZadb2","used":true,"link":"https://zydnc.gitee.io/RTDPTZadb2/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E7%BB%83%E4%B9%A0.jpg","link":"https://zydnc.gitee.io/ZeuH4X3iy/","stats":{"text":"3 min read","time":176000,"words":530,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%87%86%E5%A4%87%E4%B8%80%E6%AE%B5%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84json%E6%96%87%E6%9C%AC\">一、准备一段测试用的Json文本</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%8E%BB%E9%99%A4%E9%99%A4value%E5%80%BC%E4%B8%AD%E7%9A%84%E7%A9%BA%E7%99%BD%E5%AD%97%E7%AC%A6%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E7%A9%BA%E7%99%BD%E5%AD%97%E7%AC%A6\">二、去除除value值中的空白字符之外的所有空白字符</a></li>\n<li><a href=\"#%E4%B8%89-%E5%86%99%E4%B8%80%E4%B8%AA%E9%9A%BE%E7%9C%8B%E7%9A%84%E9%A1%B5%E9%9D%A2\">三、写一个难看的页面</a></li>\n<li><a href=\"#%E5%9B%9B-%E6%B5%8B%E8%AF%95%E4%B8%80%E4%B8%8B%E6%95%88%E6%9E%9C\">四、测试一下效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-22 21:41:33","dateFormat":"2021-01-22"},{"fileName":"ORutvrQMw","abstract":"","description":"一、CSS3以前的选择器 选择器 概述 例 标签选择器 选择页面中所有指定类型的标签 a{} ID选择器 选择页面中拥有指定ID值的标签 #id{} Class选择器 选择页面中拥有指定Class值的标签 .class...","title":"CSS3新增选择器记录","tags":[{"index":-1,"name":"CSS","slug":"css","used":true,"link":"https://zydnc.gitee.io/css/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/CSS3.jpg","link":"https://zydnc.gitee.io/ORutvrQMw/","stats":{"text":"3 min read","time":142000,"words":607,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-css3%E4%BB%A5%E5%89%8D%E7%9A%84%E9%80%89%E6%8B%A9%E5%99%A8\">一、CSS3以前的选择器</a></li>\n<li><a href=\"#%E4%BA%8C-css3%E6%96%B0%E5%A2%9E%E7%9A%84%E9%80%89%E6%8B%A9%E5%99%A8\">二、CSS3新增的选择器</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-18 15:58:47","dateFormat":"2021-01-18"},{"fileName":"8Jg7UIzu2","abstract":"","description":" 官网：https://www.layui.com/ 下载好LayUI的资源文件 一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; href=&quot;layui-v2.5.7/layui/css...","title":"LayUI学习（1）布局容器","tags":[{"name":"LayUI","slug":"gbAGgIbfN","used":true,"link":"https://zydnc.gitee.io/gbAGgIbfN/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/LayUI.jpg","link":"https://zydnc.gitee.io/8Jg7UIzu2/","stats":{"text":"1 min read","time":46000,"words":162,"minutes":1},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%9B%BA%E5%AE%9A%E5%AE%BD%E5%BA%A6%E5%AE%B9%E5%99%A8\">二、固定宽度容器</a></li>\n<li><a href=\"#%E4%B8%89-%E9%80%82%E5%BA%94%E5%AE%BD%E5%BA%A6%E5%AE%B9%E5%99%A8\">三、适应宽度容器</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-16 14:21:35","dateFormat":"2021-01-16"},{"fileName":"Proxy","abstract":"","description":"一、代理模式 简介：用另外的对象处理当前对象的业务逻辑并且不会影响到当前对象的一种增强当前对象功能的开发模式 作用：临时增强当前对象的功能 1. 分类 静态代理 动态代理 2. 静态代理 问：什么是静态代理？ 答：通俗一点讲，就是...","title":"Java的代理模式实现","tags":[{"name":"代理模式","slug":"WZ_jj-ey9","used":true,"link":"https://zydnc.gitee.io/WZ_jj-ey9/"},{"index":-1,"name":"设计模式","slug":"designpatterns","used":true,"link":"https://zydnc.gitee.io/designpatterns/"},{"name":"动态代理","slug":"d4DanwKEpK","used":true,"link":"https://zydnc.gitee.io/d4DanwKEpK/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F.jpg","link":"https://zydnc.gitee.io/Proxy/","stats":{"text":"6 min read","time":322000,"words":1266,"minutes":6},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F\">一、代理模式</a>\n<ul>\n<li><a href=\"#1-%E5%88%86%E7%B1%BB\">1. 分类</a></li>\n<li><a href=\"#2-%E9%9D%99%E6%80%81%E4%BB%A3%E7%90%86\">2. 静态代理</a>\n<ul>\n<li><a href=\"#%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E6%8E%A5%E5%8F%A3%E5%A4%9A%E6%80%81%E5%AE%9E%E7%8E%B0\">代码实现（接口多态实现）</a></li>\n</ul>\n</li>\n<li><a href=\"#3-%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86\">3. 动态代理</a>\n<ul>\n<li><a href=\"#jdk%E4%BB%A3%E7%90%86%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0\">JDK代理代码实现</a></li>\n<li><a href=\"#cglib%E4%BB%A3%E7%90%86%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0\">CGLIB代理代码实现</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-16 08:27:30","dateFormat":"2021-01-16"},{"fileName":"JavaHttp","abstract":"","description":"一、原生实现GET请求 public static String Get(String url) { HttpURLConnection conn = null; InputStream is = null; Buf...","title":"Java原生实现HTTP的GET和POST请求","tags":[{"name":"get","slug":"8OyQWVfwC","used":true,"link":"https://zydnc.gitee.io/8OyQWVfwC/"},{"name":"post","slug":"WNsFqIvlCU","used":true,"link":"https://zydnc.gitee.io/WNsFqIvlCU/"},{"index":-1,"name":"HTTP","slug":"http","used":true,"link":"https://zydnc.gitee.io/http/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/HTTP%E5%8D%8F%E8%AE%AE.jpg","link":"https://zydnc.gitee.io/JavaHttp/","stats":{"text":"5 min read","time":278000,"words":966,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%8E%9F%E7%94%9F%E5%AE%9E%E7%8E%B0get%E8%AF%B7%E6%B1%82\">一、原生实现GET请求</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%8E%9F%E7%94%9F%E5%AE%9E%E7%8E%B0post%E8%AF%B7%E6%B1%82\">二、原生实现POST请求</a></li>\n<li><a href=\"#%E4%B8%89-post%E8%AF%B7%E6%B1%82%E4%B8%AD%E7%9A%84%E5%B8%B8%E8%A7%81content-type\">三、POST请求中的常见Content-Type</a>\n<ul>\n<li><a href=\"#1-%E4%BB%A5querystring%E7%9A%84%E5%BD%A2%E5%BC%8F%E5%8E%BB%E6%8F%90%E4%BA%A4post%E5%8F%82%E6%95%B0\">1. 以QueryString的形式去提交POST参数</a></li>\n<li><a href=\"#2-%E4%BB%A5formdata%E7%9A%84%E5%BD%A2%E5%BC%8F%E5%8E%BB%E6%8F%90%E4%BA%A4post%E5%8F%82%E6%95%B0\">2. 以FormData的形式去提交POST参数</a></li>\n<li><a href=\"#3-%E4%BB%A5json%E6%A0%BC%E5%BC%8F%E5%8E%BB%E6%8F%90%E4%BA%A4post%E5%8F%82%E6%95%B0\">3. 以Json格式去提交POST参数</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-15 12:57:31","dateFormat":"2021-01-15"},{"fileName":"LwW9qXRhj","abstract":"","description":"一、找不到这几个系统文件怎么办？ 那是因为这几个都是系统文件，不仅被隐藏还受系统保护，所以要取消隐藏系统保护文件，看下面一步步来就好 1. 第一步 2. 第二步 这样就可以显示被隐藏的系统文件了，但我们尽量不要随便删除系统文件，否则会...","title":"Win10系统盘空间优化总结","tags":[{"name":"Windows10","slug":"vdEsY_-hV","used":true,"link":"https://zydnc.gitee.io/vdEsY_-hV/"},{"name":"小技巧","slug":"gKHkL-knM","used":true,"link":"https://zydnc.gitee.io/gKHkL-knM/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Windows10.jpg","link":"https://zydnc.gitee.io/LwW9qXRhj/","stats":{"text":"5 min read","time":260000,"words":1221,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E6%89%BE%E4%B8%8D%E5%88%B0%E8%BF%99%E5%87%A0%E4%B8%AA%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6%E6%80%8E%E4%B9%88%E5%8A%9E\">一、找不到这几个系统文件怎么办？</a>\n<ul>\n<li><a href=\"#1-%E7%AC%AC%E4%B8%80%E6%AD%A5\">1. 第一步</a></li>\n<li><a href=\"#2-%E7%AC%AC%E4%BA%8C%E6%AD%A5\">2. 第二步</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-%E5%88%A0%E9%99%A4%E7%B3%BB%E7%BB%9F%E4%BC%91%E7%9C%A0%E6%96%87%E4%BB%B6-hiberfilsys\">二、删除系统休眠文件 hiberfil.sys</a>\n<ul>\n<li><a href=\"#1-%E7%AC%AC%E4%B8%80%E6%AD%A5%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90%E8%BF%90%E8%A1%8Ccmd\">1. 第一步：管理员权限运行CMD</a></li>\n<li><a href=\"#2-%E7%AC%AC%E4%BA%8C%E6%AD%A5%E8%BE%93%E5%85%A5%E5%91%BD%E4%BB%A4powercfg-h-off%E5%9B%9E%E8%BD%A6%E6%89%A7%E8%A1%8C\">2. 第二步：输入命令<code>powercfg -h off</code>，回车执行</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%BA%8C-%E7%A7%BB%E5%8A%A8%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E6%96%87%E4%BB%B6-pagefilesys\">二、移动虚拟内存文件 pagefile.sys</a>\n<ul>\n<li><a href=\"#%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%8F%B3%E9%94%AE%E6%AD%A4%E7%94%B5%E8%84%91%E7%82%B9%E5%87%BB%E5%B1%9E%E6%80%A7%E5%9C%A8%E5%BC%B9%E5%87%BA%E7%AA%97%E5%8F%A3%E7%82%B9%E5%87%BB%E9%AB%98%E7%BA%A7%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE%E5%A6%82%E4%B8%8B\">第一步：右键“此电脑”，点击“属性”，在弹出窗口点击“高级系统设置”，如下</a></li>\n<li><a href=\"#%E7%AC%AC%E4%BA%8C%E6%AD%A5%E5%9C%A8%E5%BC%B9%E5%87%BA%E7%AA%97%E5%8F%A3%E9%80%89%E6%8B%A9%E9%AB%98%E7%BA%A7%E9%80%89%E9%A1%B9%E5%8D%A1%E7%82%B9%E5%87%BB%E6%80%A7%E8%83%BD%E4%B8%8B%E7%9A%84%E8%AE%BE%E7%BD%AE\">第二步：在弹出窗口选择“高级”选项卡，点击“性能”下的“设置”</a></li>\n<li><a href=\"#%E7%AC%AC%E4%B8%89%E6%AD%A5%E5%9C%A8%E5%BC%B9%E5%87%BA%E7%AA%97%E5%8F%A3%E9%80%89%E6%8B%A9%E9%AB%98%E7%BA%A7%E9%80%89%E9%A1%B9%E5%8D%A1%E7%82%B9%E5%87%BB%E6%9B%B4%E6%94%B9\">第三步：在弹出窗口选择“高级”选项卡，点击“更改”</a></li>\n<li><a href=\"#%E7%AC%AC%E5%9B%9B%E6%AD%A5%E6%88%91%E6%98%AF%E5%B7%B2%E7%BB%8F%E7%A7%BB%E5%8A%A8%E8%BF%87%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E6%89%80%E4%BB%A5c%E7%9B%98%E8%BF%99%E9%87%8C%E6%98%BE%E7%A4%BA%E7%A9%BA%E6%B2%A1%E7%A7%BB%E5%8A%A8%E5%89%8D%E4%BC%9A%E6%98%BE%E7%A4%BA%E6%89%98%E7%AE%A1%E7%9A%84%E7%B3%BB%E7%BB%9F\">第四步：我是已经移动过这个文件，所以C盘这里显示空，没移动前会显示“托管的系统”</a></li>\n<li><a href=\"#%E7%AC%AC%E4%BA%94%E6%AD%A5%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E4%BD%A0%E7%9A%84%E7%A9%BA%E9%97%B2%E7%A3%81%E7%9B%98%E5%87%86%E5%A4%87%E5%B0%86%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E6%96%87%E4%BB%B6%E7%A7%BB%E5%8A%A8%E8%BF%87%E5%8E%BB%E7%9A%84%E7%A3%81%E7%9B%98%E9%80%89%E6%8B%A9%E5%AE%83%E7%84%B6%E5%90%8E%E7%82%B9%E5%87%BB%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86%E7%9A%84%E5%A4%A7%E5%B0%8F%E7%84%B6%E5%90%8E%E7%82%B9%E5%87%BB%E8%AE%BE%E7%BD%AE%E6%9C%80%E5%90%8E%E7%A1%AE%E5%AE%9A%E5%8F%AF%E8%83%BD%E4%BC%9A%E8%AE%A9%E4%BD%A0%E9%87%8D%E5%90%AF%E7%B3%BB%E7%BB%9F%E5%A6%82%E6%9E%9C%E6%8F%90%E7%A4%BA%E8%AF%B7%E5%BF%BD%E7%95%A5%E6%88%91%E4%BB%AC%E8%BF%98%E8%A6%81%E7%BB%A7%E7%BB%AD%E6%93%8D%E4%BD%9C\">第五步：选择一个你的空闲磁盘，准备将虚拟内存文件移动过去的磁盘，选择它，然后点击“系统管理的大小”，然后点击“设置”，最后“确定”，可能会让你重启系统，如果提示，请忽略，我们还要继续操作</a></li>\n<li><a href=\"#%E7%AC%AC%E5%85%AD%E6%AD%A5%E8%BF%99%E6%AC%A1%E9%80%89%E6%8B%A9c%E7%9B%98%E7%84%B6%E5%90%8E%E9%80%89%E6%8B%A9%E6%97%A0%E5%88%86%E9%A1%B5%E6%96%87%E4%BB%B6%E7%82%B9%E5%87%BB%E8%AE%BE%E7%BD%AE%E6%9C%80%E5%90%8E%E7%82%B9%E5%87%BB%E7%A1%AE%E8%AE%A4%E7%84%B6%E5%90%8E%E4%B8%80%E8%B7%AF%E7%A1%AE%E8%AE%A4%E7%9B%B4%E5%88%B0%E6%89%80%E6%9C%89%E7%AA%97%E5%8F%A3%E5%85%B3%E9%97%AD%E7%82%B9%E5%87%BB%E7%AB%8B%E5%8D%B3%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E7%B3%BB%E7%BB%9F%E7%AD%89%E5%BE%85%E7%B3%BB%E7%BB%9F%E9%87%8D%E5%90%AF%E5%B0%B1%E5%A5%BD%E4%BA%86%E7%B3%BB%E7%BB%9F%E9%87%8D%E5%90%AF%E5%90%8E%E6%88%91%E4%BB%AC%E5%8F%91%E7%8E%B0c%E7%9B%98%E4%B8%AD%E7%9A%84pagefilesys%E4%B8%8D%E5%9C%A8%E4%BA%86%E6%89%93%E5%BC%80%E6%88%91%E4%BB%AC%E9%80%89%E6%8B%A9%E7%9A%84%E7%A9%BA%E9%97%B2%E7%A1%AC%E7%9B%98%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%A0%B9%E7%9B%AE%E5%BD%95%E7%9C%8B%E5%88%B0%E8%A2%AB%E7%A7%BB%E5%8A%A8%E7%9A%84pagefilesys%E6%96%87%E4%BB%B6\">第六步：这次选择C盘，然后选择“无分页文件”，点击“设置”，最后点击“确认”，然后一路确认，直到所有窗口关闭，点击“立即重新启动”系统，等待系统重启就好了，系统重启后，我们发现C盘中的pagefile.sys不在了，打开我们选择的空闲硬盘，可以在根目录看到被移动的pagefile.sys文件</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-13 23:42:32","dateFormat":"2021-01-13"},{"fileName":"hab_ZN2hO","abstract":"","description":"一、右键创建文本文件 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\\.txt] @=&quot;txtfile&quot; &quot;Content Type&quo...","title":"常用注册表自定义功能","tags":[{"name":"小技巧","slug":"gKHkL-knM","used":true,"link":"https://zydnc.gitee.io/gKHkL-knM/"},{"name":"注册表","slug":"XolcFMCqP","used":true,"link":"https://zydnc.gitee.io/XolcFMCqP/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E6%B3%A8%E5%86%8C%E8%A1%A8.jpg","link":"https://zydnc.gitee.io/hab_ZN2hO/","stats":{"text":"3 min read","time":165000,"words":478,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%8F%B3%E9%94%AE%E5%88%9B%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6\">一、右键创建文本文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%8F%B3%E9%94%AE%E8%AE%B0%E4%BA%8B%E6%9C%AC%E6%89%93%E5%BC%80\">二、右键记事本打开</a></li>\n<li><a href=\"#%E4%B8%89-%E5%8F%B3%E9%94%AE%E6%9F%A5%E7%9C%8B%E6%96%87%E4%BB%B6hash%E5%80%BC\">三、右键查看文件Hash值</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-12 21:11:58","dateFormat":"2021-01-12"},{"fileName":"SHhX20vPx","abstract":"","description":"一、创建自定义注解 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyTest {} 二、创建测...","title":"自定义注解简单模拟Junit实现测试","tags":[{"name":"反射","slug":"j9M5Grf5Z","used":true,"link":"https://zydnc.gitee.io/j9M5Grf5Z/"},{"name":"注解","slug":"ARM0BXY_tP","used":true,"link":"https://zydnc.gitee.io/ARM0BXY_tP/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E5%8F%8D%E5%B0%84%E6%B3%A8%E8%A7%A3.jpg","link":"https://zydnc.gitee.io/SHhX20vPx/","stats":{"text":"1 min read","time":43000,"words":153,"minutes":1},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%88%9B%E5%BB%BA%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B3%A8%E8%A7%A3\">一、创建自定义注解</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%88%9B%E5%BB%BA%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%B1%BB%E5%92%8C%E6%96%B9%E6%B3%95\">二、创建测试用的类和方法</a></li>\n<li><a href=\"#%E4%B8%89-%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B3%A8%E8%A7%A3%E5%8A%9F%E8%83%BD\">三、实现自定义注解功能</a></li>\n<li><a href=\"#%E5%9B%9B-%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C\">四、执行结果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-12 16:54:20","dateFormat":"2021-01-12"},{"fileName":"06BP2pOk4","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（11）段落","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/06BP2pOk4/","stats":{"text":"9 min read","time":527000,"words":1472,"minutes":9},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%99%AE%E9%80%9A%E6%AE%B5%E8%90%BD\">二、普通段落</a></li>\n<li><a href=\"#%E4%B8%89-%E5%8D%A0%E4%BD%8D%E7%AC%A6%E6%AE%B5%E8%90%BD\">三、占位符段落</a></li>\n<li><a href=\"#%E5%9B%9B-%E9%98%B4%E5%BD%B1%E6%AE%B5%E8%90%BD\">四、阴影段落</a></li>\n<li><a href=\"#%E4%BA%94-%E5%A0%86%E5%8F%A0%E6%AE%B5%E8%90%BD\">五、堆叠段落</a></li>\n<li><a href=\"#%E5%85%AD-%E5%A4%9A%E5%BD%A9%E6%AE%B5%E8%90%BD\">六、多彩段落</a></li>\n<li><a href=\"#%E4%B8%83-%E5%B8%A6%E5%8A%A0%E8%BD%BD%E5%99%A8%E6%AE%B5%E8%90%BD\">七、带加载器段落</a></li>\n<li><a href=\"#%E5%85%AB-%E5%8F%8D%E8%BD%AC%E6%AE%B5%E8%90%BD\">八、反转段落</a></li>\n<li><a href=\"#%E4%B9%9D-%E5%9E%82%E7%9B%B4%E9%99%84%E5%8A%A0%E6%AE%B5%E8%90%BD\">九、垂直附加段落</a></li>\n<li><a href=\"#%E5%8D%81-%E5%88%86%E7%BA%A7%E5%86%85%E5%AE%B9%E6%AE%B5%E8%90%BD\">十、分级内容段落</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%80-%E5%9C%86%E5%BD%A2%E6%AE%B5%E8%90%BD\">十一、圆形段落</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%8C-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">十二、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-11 20:50:26","dateFormat":"2021-01-11"},{"fileName":"6TaBTojkN","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（10）揭示效果","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/6TaBTojkN/","stats":{"text":"4 min read","time":224000,"words":633,"minutes":4},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-fade%E6%B8%90%E9%9A%90%E6%B8%90%E7%8E%B0%E6%95%88%E6%9E%9C\">二、Fade（渐隐渐现效果）</a></li>\n<li><a href=\"#%E4%B8%89-move%E5%B7%A6%E5%8F%B3%E7%A7%BB%E5%8A%A8%E6%95%88%E6%9E%9C\">三、Move（左右移动效果）</a></li>\n<li><a href=\"#%E5%9B%9B-rotate%E6%97%8B%E8%BD%AC%E6%8F%AD%E7%A4%BA%E6%95%88%E6%9E%9C\">四、Rotate（旋转揭示效果）</a></li>\n<li><a href=\"#%E4%BA%94-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">五、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-11 20:18:17","dateFormat":"2021-01-11"},{"fileName":"9njMczwwO","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（9）占位符","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/9njMczwwO/","stats":{"text":"5 min read","time":253000,"words":714,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%99%AE%E9%80%9A%E5%8D%A0%E4%BD%8D%E7%AC%A6\">二、普通占位符</a></li>\n<li><a href=\"#%E4%B8%89-segment%E5%8D%A0%E4%BD%8D%E7%AC%A6\">三、segment占位符</a></li>\n<li><a href=\"#%E5%9B%9B-%E4%B8%8D%E5%90%8C%E9%95%BF%E5%BA%A6%E5%8D%A0%E4%BD%8D%E7%AC%A6\">四、不同长度占位符</a></li>\n<li><a href=\"#%E4%BA%94-%E9%80%82%E5%BA%94%E5%AE%B9%E5%99%A8%E5%8D%A0%E4%BD%8D%E7%AC%A6\">五、适应容器占位符</a></li>\n<li><a href=\"#%E5%85%AD-%E5%8F%8D%E8%BD%AC%E5%8D%A0%E4%BD%8D%E7%AC%A6\">六、反转占位符</a></li>\n<li><a href=\"#%E4%B8%83-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">七、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-11 20:03:04","dateFormat":"2021-01-11"},{"fileName":"QDJU1dBj2","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（8）加载器","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/QDJU1dBj2/","stats":{"text":"6 min read","time":350000,"words":1026,"minutes":6},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%99%AE%E9%80%9A%E5%8A%A0%E8%BD%BD%E5%99%A8\">二、普通加载器</a></li>\n<li><a href=\"#%E4%B8%89-%E5%8A%A0%E8%BD%BD%E5%99%A8%E5%8F%8D%E8%BD%AC\">三、加载器反转</a></li>\n<li><a href=\"#%E5%9B%9B-%E5%B8%A6%E6%96%87%E5%AD%97%E6%8F%8F%E8%BF%B0%E7%9A%84%E5%8A%A0%E8%BD%BD%E5%99%A8\">四、带文字描述的加载器</a></li>\n<li><a href=\"#%E4%BA%94-%E4%B8%8D%E5%90%8C%E7%8A%B6%E6%80%81%E7%9A%84%E5%8A%A0%E8%BD%BD%E5%99%A8\">五、不同状态的加载器</a></li>\n<li><a href=\"#%E5%85%AD-%E5%8A%A0%E8%BD%BD%E5%99%A8%E7%9A%84%E6%98%BE%E7%A4%BA%E4%B8%8E%E9%9A%90%E8%97%8F\">六、加载器的显示与隐藏</a></li>\n<li><a href=\"#%E4%B8%83-%E5%86%85%E8%81%94%E6%A0%B7%E5%BC%8F%E5%8A%A0%E8%BD%BD%E5%99%A8\">七、内联样式加载器</a></li>\n<li><a href=\"#%E5%85%AB-%E4%B8%8D%E5%90%8C%E5%B0%BA%E5%AF%B8%E5%8A%A0%E8%BD%BD%E5%99%A8\">八、不同尺寸加载器</a></li>\n<li><a href=\"#%E4%B9%9D-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">九、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-11 19:46:47","dateFormat":"2021-01-11"},{"fileName":"QwkVexFfD","abstract":"","description":"一、使用代码输出Java中所有TimeZoneID public static void main(String[] args) { Set&lt;String&gt; zoneIds = ZoneId.getAvailableZo...","title":"Java中所有TimeZoneID","tags":[{"name":"timezone","slug":"c3jzsyxhZ","used":true,"link":"https://zydnc.gitee.io/c3jzsyxhZ/"},{"name":"时区","slug":"qaF2dMtBdX","used":true,"link":"https://zydnc.gitee.io/qaF2dMtBdX/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/TimeZone.jpg","link":"https://zydnc.gitee.io/QwkVexFfD/","stats":{"text":"9 min read","time":484000,"words":1318,"minutes":9},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%A0%81%E8%BE%93%E5%87%BAjava%E4%B8%AD%E6%89%80%E6%9C%89timezoneid\">一、使用代码输出Java中所有TimeZoneID</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%89%80%E6%9C%89timezoneid%E8%A1%A8%E6%A0%BC\">二、所有TimeZoneID表格</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-10 20:20:08","dateFormat":"2021-01-10"},{"fileName":"eycw6BwYh","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（7）列表","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/eycw6BwYh/","stats":{"text":"36 min read","time":2100000,"words":5757,"minutes":36},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%99%AE%E9%80%9A%E5%88%97%E8%A1%A8\">二、普通列表</a></li>\n<li><a href=\"#%E4%B8%89-%E5%9B%BE%E6%A0%87%E5%88%97%E8%A1%A8\">三、图标列表</a></li>\n<li><a href=\"#%E5%9B%9B-%E5%A5%BD%E5%8F%8B%E5%88%97%E8%A1%A8%E6%A0%B7%E5%BC%8F\">四、好友列表样式</a></li>\n<li><a href=\"#%E4%BA%94-%E6%B0%B4%E5%B9%B3%E5%88%97%E8%A1%A8\">五、水平列表</a></li>\n<li><a href=\"#%E5%85%AD-%E5%9E%82%E7%9B%B4%E5%88%97%E8%A1%A8\">六、垂直列表</a></li>\n<li><a href=\"#%E4%B8%83-%E5%8A%A8%E7%94%BB%E6%95%88%E6%9E%9C%E5%88%97%E8%A1%A8\">七、动画效果列表</a></li>\n<li><a href=\"#%E5%85%AB-%E5%9E%82%E7%9B%B4%E6%9D%BE%E6%95%A3%E5%88%97%E8%A1%A8\">八、垂直松散列表</a></li>\n<li><a href=\"#%E4%B9%9D-%E6%B0%B4%E5%B9%B3%E6%9D%BE%E6%95%A3%E5%88%97%E8%A1%A8\">九、水平松散列表</a></li>\n<li><a href=\"#%E5%8D%81-%E5%9E%82%E7%9B%B4%E5%8D%95%E5%85%83%E6%A0%BC%E5%BD%A2%E5%BC%8F%E5%88%97%E8%A1%A8\">十、垂直单元格形式列表</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%80-%E6%B0%B4%E5%B9%B3%E5%8D%95%E5%85%83%E6%A0%BC%E5%BD%A2%E5%BC%8F%E5%88%97%E8%A1%A8\">十一、水平单元格形式列表</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%8C-%E4%B8%8D%E5%90%8C%E5%B0%BA%E5%AF%B8%E7%9A%84%E5%88%97%E8%A1%A8\">十二、不同尺寸的列表</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%89-%E5%A5%BD%E5%8F%8B%E5%88%97%E8%A1%A8\">十三、好友列表</a></li>\n<li><a href=\"#%E5%8D%81%E5%9B%9B-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">十四、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-10 09:13:52","dateFormat":"2021-01-10"},{"fileName":"PBrRBU_6S","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（6）标签","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/PBrRBU_6S/","stats":{"text":"11 min read","time":628000,"words":1782,"minutes":11},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%99%AE%E9%80%9A%E6%A0%87%E7%AD%BE\">二、普通标签</a></li>\n<li><a href=\"#%E4%B8%89-%E5%B8%A6%E5%A4%B4%E5%83%8F%E7%9A%84%E6%A0%87%E7%AD%BE\">三、带头像的标签</a></li>\n<li><a href=\"#%E5%9B%9B-%E5%B8%A6%E5%9B%BE%E6%A0%87%E7%9A%84%E6%A0%87%E7%AD%BE\">四、带图标的标签</a></li>\n<li><a href=\"#%E4%BA%94-%E6%B0%94%E6%B3%A1%E6%A1%86%E6%A0%87%E7%AD%BE\">五、气泡框标签</a></li>\n<li><a href=\"#%E5%85%AD-%E8%A7%92%E8%90%BD%E6%A0%87%E7%AD%BE\">六、角落标签</a></li>\n<li><a href=\"#%E4%B8%83-%E4%B9%A6%E7%AD%BE%E6%A0%B7%E5%BC%8F%E7%9A%84%E6%A0%87%E7%AD%BE\">七、书签样式的标签</a></li>\n<li><a href=\"#%E5%85%AB-%E7%BB%B6%E5%B8%A6%E6%A0%B7%E5%BC%8F%E6%A0%87%E7%AD%BE\">八、绶带样式标签</a></li>\n<li><a href=\"#%E4%B9%9D-%E9%99%84%E5%8A%A0%E6%A0%87%E7%AD%BE%E6%A0%B7%E5%BC%8F\">九、附加标签样式</a></li>\n<li><a href=\"#%E5%8D%81-%E6%B5%AE%E5%8A%A8%E8%A7%92%E6%A0%87%E6%A0%87%E7%AD%BE\">十、浮动角标标签</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%80-%E5%B8%A6%E5%9B%BE%E7%89%87%E7%9A%84%E6%A0%87%E7%AD%BE\">十一、带图片的标签</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%8C-%E5%9C%86%E5%BD%A2%E5%8C%96%E6%A0%87%E7%AD%BE\">十二、圆形化标签</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%89-%E5%9C%86%E7%82%B9%E6%A0%87%E7%AD%BE\">十三、圆点标签</a></li>\n<li><a href=\"#%E5%8D%81%E5%9B%9B-%E4%B8%8D%E5%90%8C%E5%B0%BA%E5%AF%B8%E6%A0%87%E7%AD%BE\">十四、不同尺寸标签</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%94-%E7%BB%9F%E4%B8%80%E5%B0%BA%E5%AF%B8%E6%A0%87%E7%AD%BE%E7%BB%84\">十五、统一尺寸标签组</a></li>\n<li><a href=\"#%E5%8D%81%E5%85%AD-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">十六、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-10 08:55:19","dateFormat":"2021-01-10"},{"fileName":"T1juUwu3S","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（5）输入框","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/T1juUwu3S/","stats":{"text":"8 min read","time":437000,"words":1300,"minutes":8},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%A0%87%E5%87%86%E8%BE%93%E5%85%A5%E6%A1%86\">二、标准输入框</a></li>\n<li><a href=\"#%E4%B8%89-%E8%81%9A%E7%84%A6%E8%BE%93%E5%85%A5%E6%A1%86\">三、聚焦输入框</a></li>\n<li><a href=\"#%E5%9B%9B-%E5%8A%A0%E8%BD%BD%E5%9B%BE%E6%A0%87%E8%BE%93%E5%85%A5%E6%A1%86\">四、加载图标输入框</a></li>\n<li><a href=\"#%E4%BA%94-%E4%B8%8D%E5%90%8C%E7%8A%B6%E6%80%81%E8%BE%93%E5%85%A5%E6%A1%86\">五、不同状态输入框</a></li>\n<li><a href=\"#%E5%85%AD-%E5%B8%A6%E6%A0%87%E7%AD%BE%E8%BE%93%E5%85%A5%E6%A1%86\">六、带标签输入框</a></li>\n<li><a href=\"#%E4%B8%83-%E5%B8%A6%E5%9B%BE%E6%A0%87%E8%BE%93%E5%85%A5%E6%A1%86\">七、带图标输入框</a></li>\n<li><a href=\"#%E5%85%AB-%E5%B8%A6%E4%B8%8B%E6%8B%89%E5%88%97%E8%A1%A8%E8%BE%93%E5%85%A5%E6%A1%86\">八、带下拉列表输入框</a></li>\n<li><a href=\"#%E4%B9%9D-%E5%9B%BE%E6%A0%87%E6%A0%87%E7%AD%BE%E8%BE%93%E5%85%A5%E6%A1%86\">九、图标+标签输入框</a></li>\n<li><a href=\"#%E5%8D%81-%E8%A7%92%E8%90%BD%E5%9B%BE%E6%A0%87%E8%BE%93%E5%85%A5%E6%A1%86\">十、角落图标输入框</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%80-%E5%B8%A6%E6%8C%89%E9%92%AE%E7%9A%84%E8%BE%93%E5%85%A5%E6%A1%86\">十一、带按钮的输入框</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%8C-%E9%80%8F%E6%98%8E%E8%BE%93%E5%85%A5%E6%A1%86\">十二、透明输入框</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%89-%E9%80%82%E5%BA%94%E5%AE%B9%E5%99%A8%E8%BE%93%E5%85%A5%E6%A1%86\">十三、适应容器输入框</a></li>\n<li><a href=\"#%E5%8D%81%E5%9B%9B-%E4%B8%8D%E5%90%8C%E5%B0%BA%E5%AF%B8%E8%BE%93%E5%85%A5%E6%A1%86\">十四、不同尺寸输入框</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%94-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">十五、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-09 23:11:51","dateFormat":"2021-01-09"},{"fileName":"6S9G53Ktp","abstract":"","description":"一、引入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（4）图片","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/6S9G53Ktp/","stats":{"text":"5 min read","time":276000,"words":811,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%BC%95%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、引入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%B8%8D%E5%90%8C%E5%B0%BA%E5%AF%B8%E7%9A%84%E5%9B%BE%E7%89%87\">二、不同尺寸的图片</a></li>\n<li><a href=\"#%E4%B8%89-%E4%B8%8D%E5%90%8C%E7%8A%B6%E6%80%81%E7%9A%84%E5%9B%BE%E7%89%87\">三、不同状态的图片</a></li>\n<li><a href=\"#%E5%9B%9B-%E6%9C%89%E8%BE%B9%E6%A1%86%E7%9A%84%E5%9B%BE%E7%89%87\">四、有边框的图片</a></li>\n<li><a href=\"#%E4%BA%94-%E9%80%82%E5%BA%94%E5%AE%B9%E5%99%A8%E7%9A%84%E5%9B%BE%E7%89%87\">五、适应容器的图片</a></li>\n<li><a href=\"#%E5%85%AD-%E5%9C%86%E8%A7%92%E7%9A%84%E5%9B%BE%E7%89%87\">六、圆角的图片</a></li>\n<li><a href=\"#%E4%B8%83-%E5%9C%86%E5%BD%A2%E7%9A%84%E5%9B%BE%E7%89%87\">七、圆形的图片</a></li>\n<li><a href=\"#%E5%85%AB-%E4%BD%8D%E7%BD%AE%E5%B1%85%E4%B8%AD%E7%9A%84%E5%9B%BE%E7%89%87\">八、位置居中的图片</a></li>\n<li><a href=\"#%E4%B9%9D-%E5%90%8C%E4%B8%80%E5%B0%BA%E5%AF%B8%E5%9B%BE%E7%89%87%E7%BB%84\">九、同一尺寸图片组</a></li>\n<li><a href=\"#%E5%8D%81-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">十、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-09 22:49:40","dateFormat":"2021-01-09"},{"fileName":"wVXYh7sFa","abstract":"","description":"一、导入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（3）标题","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/wVXYh7sFa/","stats":{"text":"3 min read","time":143000,"words":457,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%AF%BC%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、导入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%85%AD%E7%BA%A7%E6%A0%87%E9%A2%98\">二、六级标题</a></li>\n<li><a href=\"#%E4%B8%89-%E4%B8%8D%E5%90%8C%E5%B0%BA%E5%AF%B8%E6%A0%87%E9%A2%98\">三、不同尺寸标题</a></li>\n<li><a href=\"#%E5%9B%9B-%E8%AF%AD%E4%B9%89%E5%8C%96%E6%A0%87%E9%A2%98\">四、语义化标题</a></li>\n<li><a href=\"#%E4%BA%94-%E5%B8%A6%E5%9B%BE%E6%A0%87%E6%A0%87%E9%A2%98\">五、带图标标题</a></li>\n<li><a href=\"#%E5%85%AD-%E5%9D%97%E6%A0%87%E9%A2%98\">六、块标题</a></li>\n<li><a href=\"#%E4%B8%83-%E9%A1%B6%E9%83%A8%E5%9E%82%E7%9B%B4%E9%99%84%E5%8A%A0%E6%A0%87%E9%A2%98\">七、顶部垂直附加标题</a></li>\n<li><a href=\"#%E5%85%AB-%E5%BA%95%E9%83%A8%E5%9E%82%E7%9B%B4%E9%99%84%E5%8A%A0%E6%A0%87%E9%A2%98\">八、底部垂直附加标题</a></li>\n<li><a href=\"#%E4%B9%9D-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">九、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-09 22:30:53","dateFormat":"2021-01-09"},{"fileName":"P7fMkbvf8","abstract":"","description":"一、导入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（2）分割线","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/P7fMkbvf8/","stats":{"text":"1 min read","time":58000,"words":195,"minutes":1},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%AF%BC%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、导入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E6%99%AE%E9%80%9A%E5%88%86%E5%89%B2%E7%BA%BF\">二、普通分割线</a></li>\n<li><a href=\"#%E4%B8%89-%E7%BA%B5%E5%90%91%E5%88%86%E5%89%B2%E7%BA%BF\">三、纵向分割线</a></li>\n<li><a href=\"#%E5%9B%9B-%E6%A8%AA%E5%90%91%E5%88%86%E5%89%B2%E7%BA%BF\">四、横向分割线</a></li>\n<li><a href=\"#%E4%BA%94-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">五、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-09 22:27:29","dateFormat":"2021-01-09"},{"fileName":"zylvLeQTD","abstract":"","description":"一、导入资源文件 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/semantic-ui/2...","title":"SemanticUI学习（1）按钮","tags":[{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/"},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/"},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/"}],"feature":"http://pic.zyblog.xyz/blog/poster/SemanticUI.jpg","link":"https://zydnc.gitee.io/zylvLeQTD/","stats":{"text":"18 min read","time":1064000,"words":3003,"minutes":18},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%AF%BC%E5%85%A5%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6\">一、导入资源文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%B8%8D%E5%90%8C%E5%B0%BA%E5%AF%B8%E6%8C%89%E9%92%AE\">二、不同尺寸按钮</a></li>\n<li><a href=\"#%E4%B8%89-%E4%B8%8D%E5%90%8C%E9%A2%9C%E8%89%B2%E7%9A%84%E6%8C%89%E9%92%AE%E6%8C%89%E7%BA%A7%E5%88%AB%E5%88%86\">三、不同颜色的按钮，按级别分</a></li>\n<li><a href=\"#%E5%9B%9B-%E4%B8%8D%E5%90%8C%E9%A2%9C%E8%89%B2%E7%9A%84%E6%8C%89%E9%92%AE\">四、不同颜色的按钮</a></li>\n<li><a href=\"#%E4%BA%94-%E6%9C%89%E5%8A%A8%E7%94%BB%E6%95%88%E6%9E%9C%E7%9A%84%E6%8C%89%E9%92%AE\">五、有动画效果的按钮</a></li>\n<li><a href=\"#%E5%85%AD-%E5%B8%A6%E6%A0%87%E7%AD%BE%E6%8C%89%E9%92%AE\">六、带标签按钮</a></li>\n<li><a href=\"#%E4%B8%83-%E5%9B%BE%E6%A0%87%E6%8C%89%E9%92%AE\">七、图标按钮</a></li>\n<li><a href=\"#%E5%85%AB-%E6%A0%87%E7%AD%BE%E6%8C%89%E9%92%AE\">八、标签按钮</a></li>\n<li><a href=\"#%E4%B9%9D-%E6%99%AE%E9%80%9A%E6%8C%89%E9%92%AE%E7%BB%84%E5%90%88\">九、普通按钮组合</a></li>\n<li><a href=\"#%E5%8D%81-%E5%9B%BE%E6%A0%87%E6%8C%89%E9%92%AE%E7%BB%84%E5%90%88\">十、图标按钮组合</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%80-%E6%9D%A1%E4%BB%B6%E9%80%89%E6%8B%A9%E6%8C%89%E9%92%AE\">十一、条件选择按钮</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%8C-%E4%B8%8D%E5%90%8C%E7%8A%B6%E6%80%81%E7%9A%84%E6%8C%89%E9%92%AE\">十二、不同状态的按钮</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%89-%E5%8A%A0%E8%BD%BD%E6%8C%89%E9%92%AE\">十三、加载按钮</a></li>\n<li><a href=\"#%E5%8D%81%E5%9B%9B-%E4%B8%AA%E5%88%AB%E5%B9%B3%E5%8F%B0%E9%85%8D%E8%89%B2%E6%8C%89%E9%92%AE\">十四、个别平台配色按钮</a></li>\n<li><a href=\"#%E5%8D%81%E4%BA%94-%E6%8C%89%E9%92%AE%E6%B5%AE%E5%8A%A8\">十五、按钮浮动</a></li>\n<li><a href=\"#%E5%8D%81%E5%85%AD-%E5%BC%80%E5%85%B3%E6%8C%89%E9%92%AE\">十六、开关按钮</a></li>\n<li><a href=\"#%E5%8D%81%E4%B8%83-%E9%80%82%E5%BA%94%E5%AE%B9%E5%99%A8%E6%8C%89%E9%92%AE\">十七、适应容器按钮</a></li>\n<li><a href=\"#%E5%8D%81%E5%85%AB-%E5%9C%86%E5%BD%A2%E6%8C%89%E9%92%AE\">十八、圆形按钮</a></li>\n<li><a href=\"#%E5%8D%81%E4%B9%9D-%E5%9E%82%E7%9B%B4%E9%99%84%E5%8A%A0%E6%8C%89%E9%92%AE\">十九、垂直附加按钮</a></li>\n<li><a href=\"#%E4%BA%8C%E5%8D%81-%E5%9E%82%E7%9B%B4%E9%99%84%E5%8A%A0%E5%A4%9A%E4%B8%AA%E6%8C%89%E9%92%AE\">二十、垂直附加多个按钮</a></li>\n<li><a href=\"#%E4%BA%8C%E5%8D%81%E4%B8%80-%E5%9E%82%E7%9B%B4%E6%8C%89%E9%92%AE%E7%BB%84%E5%90%88\">二十一、垂直按钮组合</a></li>\n<li><a href=\"#%E4%BA%8C%E5%8D%81%E4%BA%8C-%E9%99%90%E5%AE%9A%E6%8C%89%E9%92%AE%E4%B8%AA%E6%95%B0%E7%9A%84%E6%8C%89%E9%92%AE%E7%BB%84\">二十二、限定按钮个数的按钮组</a></li>\n<li><a href=\"#%E4%BA%8C%E5%8D%81%E4%B8%89-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">二十三、实际效果</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-09 21:27:22","dateFormat":"2021-01-09"},{"fileName":"3mpH-6w7","abstract":"","description":"一、MimeType大全 文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*（ 字节流，未知下载文件类型时使用） application/octet-s...","title":"常见MimeType记录","tags":[{"name":"MimeType","slug":"HAZ_qOpu8","used":true,"link":"https://zydnc.gitee.io/HAZ_qOpu8/"},{"index":-1,"name":"HTTP","slug":"http","used":true,"link":"https://zydnc.gitee.io/http/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/MimeType.jpg","link":"https://zydnc.gitee.io/3mpH-6w7/","stats":{"text":"9 min read","time":530000,"words":1445,"minutes":9},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-mimetype%E5%A4%A7%E5%85%A8\">一、MimeType大全</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%A3%B0%E6%98%8E\">二、声明</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-07 10:53:55","dateFormat":"2021-01-07"},{"fileName":"zEKFZIKMH","abstract":"","description":"一、创建ServletDemo继承HttpServlet，实现doGet和doPost方法 @WebServlet(urlPatterns = &quot;/checkCodeServlet&quot;) public class Chec...","title":"Graphics绘制普通验证码","tags":[{"name":"Graphics","slug":"7FCmy-M7P","used":true,"link":"https://zydnc.gitee.io/7FCmy-M7P/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E7%BB%83%E4%B9%A0.jpg","link":"https://zydnc.gitee.io/zEKFZIKMH/","stats":{"text":"3 min read","time":138000,"words":446,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%88%9B%E5%BB%BAservletdemo%E7%BB%A7%E6%89%BFhttpservlet%E5%AE%9E%E7%8E%B0doget%E5%92%8Cdopost%E6%96%B9%E6%B3%95\">一、创建ServletDemo继承HttpServlet，实现doGet和doPost方法</a></li>\n<li><a href=\"#%E4%BA%8C-%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C%E5%A6%82%E4%B8%8B\">二、实际效果如下</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-06 17:20:17","dateFormat":"2021-01-06"},{"fileName":"UBe69VI0p","abstract":"","description":" 本教程仅限于 mysql-connectorv8.0.21 + mysql8.0 + jdk1.8 一、在pom.xml中加入JDBC驱动JAR包的依赖项 &lt;!-- https://mvnrepository.com/artifa...","title":"正则表达式模拟实现C3P0读取配置文件创建Connection对象","tags":[{"name":"JDBC","slug":"_nw6e62q9","used":true,"link":"https://zydnc.gitee.io/_nw6e62q9/"},{"name":"Regex","slug":"NQ4hTFbHKX","used":true,"link":"https://zydnc.gitee.io/NQ4hTFbHKX/"},{"name":"正则表达式","slug":"RTDPTZadb2","used":true,"link":"https://zydnc.gitee.io/RTDPTZadb2/"},{"name":"XML","slug":"mDjn3cvfIJ","used":true,"link":"https://zydnc.gitee.io/mDjn3cvfIJ/"},{"name":"C3P0","slug":"5RyDY5oFU","used":true,"link":"https://zydnc.gitee.io/5RyDY5oFU/"},{"index":-1,"name":"MySQL","slug":"mysql","used":true,"link":"https://zydnc.gitee.io/mysql/"}],"feature":"http://pic.zyblog.xyz/blog/poster/%E7%BB%83%E4%B9%A0.jpg","link":"https://zydnc.gitee.io/UBe69VI0p/","stats":{"text":"3 min read","time":179000,"words":553,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%9C%A8pomxml%E4%B8%AD%E5%8A%A0%E5%85%A5jdbc%E9%A9%B1%E5%8A%A8jar%E5%8C%85%E7%9A%84%E4%BE%9D%E8%B5%96%E9%A1%B9\">一、在pom.xml中加入JDBC驱动JAR包的依赖项</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%B9%A6%E5%86%99%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%B9%B6%E7%BD%AE%E4%BA%8Eresources%E7%9B%AE%E5%BD%95%E4%B8%8B\">二、书写配置文件，并置于resources目录下</a></li>\n<li><a href=\"#%E4%B8%89-%E4%B9%A6%E5%86%99jdbc%E7%AE%80%E5%8D%95%E5%B7%A5%E5%85%B7%E7%B1%BB\">三、书写JDBC简单工具类</a></li>\n<li><a href=\"#%E5%9B%9B-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E6%98%AF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%AE%9E%E7%8E%B0xml%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90\">四、书写代码，是用正则表达式实现xml配置文件解析</a></li>\n<li><a href=\"#%E4%BA%94-%E6%88%90%E5%8A%9F%E8%8E%B7%E5%8F%96%E6%89%80%E9%9C%80%E4%BF%A1%E6%81%AF%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%E5%A6%82%E4%B8%8B\">五、成功获取所需信息，输出结果如下</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-04 13:31:59","dateFormat":"2021-01-04"},{"fileName":"rSoFG8-KT","abstract":"","description":" 本教程仅限于 jsoupv1.11.3 + jsoupXPathv0.3.2 + jdk1.8 一、在pom.xml中添加jsoup和jsoupXPath依赖 &lt;!-- https://mvnrepository.com/arti...","title":"使用Jsoup解析XML文档","tags":[{"name":"XPath","slug":"8lVIXzXJ8","used":true,"link":"https://zydnc.gitee.io/8lVIXzXJ8/"},{"name":"XML","slug":"mDjn3cvfIJ","used":true,"link":"https://zydnc.gitee.io/mDjn3cvfIJ/"},{"name":"Jsoup","slug":"GPniBprRN5","used":true,"link":"https://zydnc.gitee.io/GPniBprRN5/"}],"feature":"http://pic.zyblog.xyz/blog/poster/Jsoup.jpg","link":"https://zydnc.gitee.io/rSoFG8-KT/","stats":{"text":"9 min read","time":528000,"words":1699,"minutes":9},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%9C%A8pomxml%E4%B8%AD%E6%B7%BB%E5%8A%A0jsoup%E5%92%8Cjsoupxpath%E4%BE%9D%E8%B5%96\">一、在pom.xml中添加jsoup和jsoupXPath依赖</a></li>\n<li><a href=\"#%E4%BA%8C-jsoup%E6%A6%82%E8%BF%B0\">二、Jsoup概述</a><br>\n*\n<ul>\n<li><a href=\"#1-jsoup%E5%AF%B9%E8%B1%A1\">1. Jsoup对象</a></li>\n<li><a href=\"#2-document%E5%AF%B9%E8%B1%A1\">2. Document对象</a></li>\n<li><a href=\"#3-elements%E5%AF%B9%E8%B1%A1\">3. Elements对象</a></li>\n<li><a href=\"#4-element%E5%AF%B9%E8%B1%A1\">4. Element对象</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E8%A7%A3%E6%9E%90-c3p0-configxml\">三、书写代码，实现解析 <code>c3p0-config.xml</code></a>\n<ul>\n<li><a href=\"#1-getelementsbytagstring-tagname%E6%96%B9%E6%B3%95\">1. getElementsByTag(String tagName)方法</a></li>\n<li><a href=\"#2-getelementsbyattributestring-key%E6%96%B9%E6%B3%95\">2. getElementsByAttribute(String key)方法</a></li>\n<li><a href=\"#3-getelementsbyattributevaluestring-keystring-value%E6%96%B9%E6%B3%95\">3. getElementsByAttributeValue(String key,String value)方法</a></li>\n<li><a href=\"#4-getelementsbyidstring-id%E6%96%B9%E6%B3%95\">4. getElementsById(String id)方法</a></li>\n</ul>\n</li>\n<li><a href=\"#%E5%9B%9B-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E4%BD%BF%E7%94%A8jsoup%E7%9A%84%E6%89%A9%E5%B1%95%E5%8A%9F%E8%83%BD%E8%A7%A3%E6%9E%90xml%E6%96%87%E4%BB%B6\">四、书写代码，使用Jsoup的扩展功能解析xml文件</a>\n<ul>\n<li><a href=\"#1-%E7%AC%AC%E4%B8%80%E6%AD%A5%E8%AF%BB%E5%8F%96xml%E6%96%87%E4%BB%B6%E8%8E%B7%E5%8F%96document%E5%AF%B9%E8%B1%A1\">1. 第一步：读取xml文件获取Document对象</a></li>\n<li><a href=\"#2-%E7%AC%AC%E4%BA%8C%E6%AD%A5%E4%BD%BF%E7%94%A8document%E5%AF%B9%E8%B1%A1%E7%9A%84select%E6%96%B9%E6%B3%95\">2. 第二步：使用Document对象的select方法</a></li>\n<li><a href=\"#3-%E7%AC%AC%E4%B8%89%E6%AD%A5%E5%AE%8C%E6%95%B4%E4%BB%A3%E7%A0%81\">3. 第三步：完整代码</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-04 09:32:44","dateFormat":"2021-01-04"},{"fileName":"XXV7UsHKh","abstract":"","description":" 本教程仅限于 gsonv2.8.5 + jdk1.8 一、在pom.xml中加入gson的依赖文件 &lt;!-- https://mvnrepository.com/artifact/com.google.code.gson/gson...","title":"使用Gson创建/解析json格式文件","tags":[{"name":"Gson","slug":"05a5Tboj4","used":true,"link":"https://zydnc.gitee.io/05a5Tboj4/"},{"name":"JSON","slug":"EU-phZhGZ","used":true,"link":"https://zydnc.gitee.io/EU-phZhGZ/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/gson.jpg","link":"https://zydnc.gitee.io/XXV7UsHKh/","stats":{"text":"3 min read","time":137000,"words":452,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%9C%A8pomxml%E4%B8%AD%E5%8A%A0%E5%85%A5gson%E7%9A%84%E4%BE%9D%E8%B5%96%E6%96%87%E4%BB%B6\">一、在pom.xml中加入gson的依赖文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E4%BD%BF%E7%94%A8%E6%97%A0%E5%8F%82%E6%9E%84%E9%80%A0%E5%88%9B%E5%BB%BAjson%E6%A0%BC%E5%BC%8F%E6%96%87%E6%9C%AC\">二、书写代码，使用无参构造创建Json格式文本</a></li>\n<li><a href=\"#%E4%B8%89-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E4%BD%BF%E7%94%A8gsonbuilder%E5%9C%A8%E5%88%9B%E5%BB%BAjson%E4%B9%8B%E5%89%8D%E8%AE%BE%E7%BD%AE%E9%AB%98%E7%BA%A7%E5%B1%9E%E6%80%A7\">三、书写代码，使用GsonBuilder在创建Json之前设置高级属性</a></li>\n<li><a href=\"#%E5%9B%9B-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E4%BD%BF%E7%94%A8gsonbuilder%E5%9C%A8%E5%88%9B%E5%BB%BAjson%E4%B9%8B%E5%89%8D%E6%8B%A5%E6%9C%89%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4%E7%9A%84%E5%8A%9F%E8%83%BD\">四、书写代码，使用GsonBuilder在创建Json之前拥有格式化日期时间的功能</a></li>\n<li><a href=\"#%E4%BA%94-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E8%A7%A3%E6%9E%90json%E6%A0%BC%E5%BC%8F%E6%96%87%E6%9C%AC\">五、书写代码，实现解析Json格式文本</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-03 15:15:38","dateFormat":"2021-01-03"},{"fileName":"4riCXnG78","abstract":"","description":" 本教程仅限于 org.jsonv20201115 + jdk1.8 一、在pom.xml中加入org.json的依赖文件 &lt;!-- https://mvnrepository.com/artifact/org.json/json...","title":"使用org.json创建/解析json格式文件","tags":[{"name":"JSON","slug":"EU-phZhGZ","used":true,"link":"https://zydnc.gitee.io/EU-phZhGZ/"},{"name":"org.json","slug":"i5GlEtKUCf","used":true,"link":"https://zydnc.gitee.io/i5GlEtKUCf/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"}],"feature":"http://pic.zyblog.xyz/blog/poster/orgjson.jpg","link":"https://zydnc.gitee.io/4riCXnG78/","stats":{"text":"5 min read","time":249000,"words":745,"minutes":5},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%9C%A8pomxml%E4%B8%AD%E5%8A%A0%E5%85%A5orgjson%E7%9A%84%E4%BE%9D%E8%B5%96%E6%96%87%E4%BB%B6\">一、在pom.xml中加入org.json的依赖文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E4%BD%BF%E7%94%A8%E6%97%A0%E5%8F%82%E6%9E%84%E9%80%A0%E5%88%9B%E5%BB%BAjson%E6%A0%BC%E5%BC%8F%E6%96%87%E6%9C%AC\">二、书写代码，使用无参构造创建Json格式文本</a></li>\n<li><a href=\"#%E4%B8%89-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E4%BD%BF%E7%94%A8%E6%9C%89%E5%8F%82%E6%9E%84%E9%80%A0%E4%BC%A0%E5%85%A5hashmap%E5%AF%B9%E8%B1%A1%E5%88%9B%E5%BB%BAjson%E6%A0%BC%E5%BC%8F%E6%96%87%E6%9C%AC\">三、书写代码，使用有参构造传入HashMap对象创建Json格式文本</a></li>\n<li><a href=\"#%E5%9B%9B-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E5%B0%81%E8%A3%85javabean%E5%AE%9E%E7%8E%B0%E5%88%9B%E5%BB%BAjson%E6%A0%BC%E5%BC%8F%E6%96%87%E6%9C%AC\">四、书写代码，封装JavaBean实现创建Json格式文本</a></li>\n<li><a href=\"#%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E8%A7%A3%E6%9E%90json%E6%96%87%E6%9C%AC\">书写代码，实现解析Json文本</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-03 13:29:19","dateFormat":"2021-01-03"},{"fileName":"-gGSoZP8v","abstract":"","description":" 本教程仅限于 druidv1.2.4 + mysql8.0 + jdk1.8 一、在pom.xml中加入druid依赖文件 &lt;!-- https://mvnrepository.com/artifact/com.alibaba/d...","title":"Druid数据库连接池技术","tags":[{"name":"Druid","slug":"D0jYG3ohU","used":true,"link":"https://zydnc.gitee.io/D0jYG3ohU/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"},{"index":-1,"name":"MySQL","slug":"mysql","used":true,"link":"https://zydnc.gitee.io/mysql/"}],"feature":"http://pic.zyblog.xyz/blog/poster/druid.jpg","link":"https://zydnc.gitee.io/-gGSoZP8v/","stats":{"text":"3 min read","time":127000,"words":432,"minutes":3},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%9C%A8pomxml%E4%B8%AD%E5%8A%A0%E5%85%A5druid%E4%BE%9D%E8%B5%96%E6%96%87%E4%BB%B6\">一、在pom.xml中加入druid依赖文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%B9%A6%E5%86%99%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">二、书写配置文件</a>\n<ul>\n<li><a href=\"#1-druid%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E6%8A%80%E6%9C%AF%E5%AF%B9%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%9A%84%E5%91%BD%E5%90%8D%E6%B2%A1%E6%9C%89%E8%A6%81%E6%B1%82%E5%9B%A0%E4%B8%BA%E5%AE%83%E9%9C%80%E8%A6%81%E6%88%91%E4%BB%AC%E8%87%AA%E5%B7%B1%E6%8B%BF%E5%88%B0%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%9A%84io%E6%B5%81%E7%84%B6%E5%90%8E%E5%B0%86io%E6%B5%81%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E5%88%9B%E5%BB%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E5%AF%B9%E8%B1%A1\">1. druid数据库连接池技术对配置文件的命名没有要求，因为它需要我们自己拿到配置文件的IO流，然后将IO流作为参数传递，创建数据库连接池对象</a></li>\n<li><a href=\"#2-%E6%88%91%E5%B0%B1%E4%BB%A5-druidproperties-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%BA%E4%BE%8B%E7%BB%A7%E7%BB%AD%E8%AE%B2%E8%A7%A3\">2. 我就以 druid.properties 配置文件为例，继续讲解</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E6%B5%8B%E8%AF%95%E6%AD%A3%E5%B8%B8%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E5%AF%B9%E8%B1%A1%E7%9A%84%E8%8E%B7%E5%8F%96\">三、书写代码，测试正常的数据库连接对象的获取</a></li>\n<li><a href=\"#%E5%9B%9B-%E8%BF%9B%E8%A1%8C%E4%B8%80%E4%BA%9Bcrud%E6%93%8D%E4%BD%9C\">四、进行一些CRUD操作</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-02 18:37:28","dateFormat":"2021-01-02"},{"fileName":"c3p0","abstract":"","description":" 本教程仅限于 c3p0v0.9.5.2 + mysql8.0 + jdk1.8 一、在pom.xml中加入C3P0依赖文件 如果是普通项目，需要解决依赖问题，c3p0的jar包依赖于mchange-common的jar包 &lt;!--...","title":"C3P0数据库连接池技术","tags":[{"name":"C3P0","slug":"5RyDY5oFU","used":true,"link":"https://zydnc.gitee.io/5RyDY5oFU/"},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/"},{"index":-1,"name":"MySQL","slug":"mysql","used":true,"link":"https://zydnc.gitee.io/mysql/"}],"feature":"http://pic.zyblog.xyz/blog/poster/C3P0.jpg","link":"https://zydnc.gitee.io/c3p0/","stats":{"text":"4 min read","time":185000,"words":635,"minutes":4},"isTop":false,"toc":"<ul class=\"markdownIt-TOC\">\n<li>\n<ul>\n<li><a href=\"#%E4%B8%80-%E5%9C%A8pomxml%E4%B8%AD%E5%8A%A0%E5%85%A5c3p0%E4%BE%9D%E8%B5%96%E6%96%87%E4%BB%B6\">一、在pom.xml中加入C3P0依赖文件</a></li>\n<li><a href=\"#%E4%BA%8C-%E4%B9%A6%E5%86%99%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\">二、书写配置文件</a>\n<ul>\n<li><a href=\"#1-%E4%B8%A5%E6%A0%BC%E6%8C%89%E7%85%A7%E8%A7%84%E5%AE%9A%E5%91%BD%E5%90%8D%E4%B8%BA-c3p0properties-%E6%96%87%E4%BB%B6\">1. 严格按照规定命名为 <code>c3p0.properties</code> 文件</a></li>\n<li><a href=\"#2-%E4%B8%A5%E6%A0%BC%E6%8C%89%E7%85%A7%E8%A7%84%E5%AE%9A%E5%91%BD%E5%90%8D%E4%B8%BA-c3p0-configxml-%E6%96%87%E4%BB%B6\">2. 严格按照规定命名为 <code>c3p0-config.xml</code> 文件</a></li>\n</ul>\n</li>\n<li><a href=\"#%E4%B8%89-%E4%B9%A6%E5%86%99%E4%BB%A3%E7%A0%81%E6%B5%8B%E8%AF%95%E6%AD%A3%E5%B8%B8%E7%9A%84%E6%95%B0%E6%8D%AE%E8%BF%9E%E6%8E%A5%E5%AF%B9%E8%B1%A1%E7%9A%84%E8%8E%B7%E5%8F%96\">三、书写代码，测试正常的数据连接对象的获取</a></li>\n<li><a href=\"#%E5%9B%9B-%E8%BF%9B%E8%A1%8C%E4%B8%80%E4%BA%9Bcrud%E6%93%8D%E4%BD%9C\">四、进行一些CRUD操作</a></li>\n</ul>\n</li>\n</ul>\n","date":"2021-01-02 17:32:26","dateFormat":"2021-01-02"}],"tags":[{"name":"ADB","slug":"CkL42eVrY","used":true,"link":"https://zydnc.gitee.io/CkL42eVrY/","count":1},{"name":"调试","slug":"2V4hmsWjwD","used":true,"link":"https://zydnc.gitee.io/2V4hmsWjwD/","count":1},{"name":"定时任务","slug":"5Mbcv-a6s","used":true,"link":"https://zydnc.gitee.io/5Mbcv-a6s/","count":1},{"name":"CRON","slug":"140ktsFoqj","used":true,"link":"https://zydnc.gitee.io/140ktsFoqj/","count":1},{"index":-1,"name":"SpringSecurity","slug":"springsecurity","used":true,"link":"https://zydnc.gitee.io/springsecurity/","count":1},{"name":"权限框架","slug":"6gNoeLTph","used":true,"link":"https://zydnc.gitee.io/6gNoeLTph/","count":1},{"index":-1,"name":"Vue2.0","slug":"2TtDJFHeW","used":true,"link":"https://zydnc.gitee.io/2TtDJFHeW/","count":1},{"index":-1,"name":"Vue3.0","slug":"co7VEnPhv","used":true,"link":"https://zydnc.gitee.io/co7VEnPhv/","count":1},{"index":-1,"name":"微服务","slug":"ioMcFDQ77","used":true,"link":"https://zydnc.gitee.io/ioMcFDQ77/","count":1},{"index":-1,"name":"SpringCloud","slug":"springcloud","used":true,"link":"https://zydnc.gitee.io/springcloud/","count":1},{"name":"SpringCloudAlibaba","slug":"p0lsHeUez","used":true,"link":"https://zydnc.gitee.io/p0lsHeUez/","count":1},{"index":-1,"name":"Docker","slug":"docker","used":true,"link":"https://zydnc.gitee.io/docker/","count":1},{"name":"容器","slug":"yuW0iYDQo","used":true,"link":"https://zydnc.gitee.io/yuW0iYDQo/","count":1},{"name":"虚拟化","slug":"gjGDX1JavI","used":true,"link":"https://zydnc.gitee.io/gjGDX1JavI/","count":1},{"name":"镜像","slug":"sO50_o3yBm","used":true,"link":"https://zydnc.gitee.io/sO50_o3yBm/","count":1},{"index":-1,"name":"Linux","slug":"linux","used":true,"link":"https://zydnc.gitee.io/linux/","count":11},{"name":"命令","slug":"Z3qSG8exS","used":true,"link":"https://zydnc.gitee.io/Z3qSG8exS/","count":11},{"index":-1,"name":"Spring","slug":"spring","used":true,"link":"https://zydnc.gitee.io/spring/","count":1},{"index":-1,"name":"SpringMVC","slug":"springmvc","used":true,"link":"https://zydnc.gitee.io/springmvc/","count":1},{"index":-1,"name":"Mybatis","slug":"mybatis","used":true,"link":"https://zydnc.gitee.io/mybatis/","count":1},{"name":"JavaSE","slug":"LRJO48mE0","used":true,"link":"https://zydnc.gitee.io/LRJO48mE0/","count":1},{"name":"API","slug":"Ts0Iy_kql","used":true,"link":"https://zydnc.gitee.io/Ts0Iy_kql/","count":1},{"name":"常用API收集","slug":"85mF2tlWY2","used":true,"link":"https://zydnc.gitee.io/85mF2tlWY2/","count":1},{"name":"队列","slug":"rSXZQNF6u","used":true,"link":"https://zydnc.gitee.io/rSXZQNF6u/","count":2},{"name":"Queue","slug":"Jmoa1nmmcE","used":true,"link":"https://zydnc.gitee.io/Jmoa1nmmcE/","count":2},{"index":-1,"name":"数据结构","slug":"datastructure","used":true,"link":"https://zydnc.gitee.io/datastructure/","count":3},{"index":0,"name":"Java","slug":"java","used":true,"link":"https://zydnc.gitee.io/java/","count":13},{"name":"稀疏数组","slug":"4Qa1Vqi9a","used":true,"link":"https://zydnc.gitee.io/4Qa1Vqi9a/","count":1},{"index":-1,"name":"Redis","slug":"redis","used":true,"link":"https://zydnc.gitee.io/redis/","count":1},{"name":"数据库","slug":"t-6x5ylCi","used":true,"link":"https://zydnc.gitee.io/t-6x5ylCi/","count":1},{"name":"自学","slug":"qjuNtQyCB","used":true,"link":"https://zydnc.gitee.io/qjuNtQyCB/","count":14},{"index":-1,"name":"Ajax","slug":"ajax","used":true,"link":"https://zydnc.gitee.io/ajax/","count":1},{"index":-1,"name":"JS","slug":"js","used":true,"link":"https://zydnc.gitee.io/js/","count":2},{"index":-1,"name":"HTTP","slug":"http","used":true,"link":"https://zydnc.gitee.io/http/","count":3},{"name":"XML","slug":"mDjn3cvfIJ","used":true,"link":"https://zydnc.gitee.io/mDjn3cvfIJ/","count":3},{"name":"练习","slug":"NhmdSaNuN","used":true,"link":"https://zydnc.gitee.io/NhmdSaNuN/","count":1},{"name":"360影视","slug":"oPMSWE43i","used":true,"link":"https://zydnc.gitee.io/oPMSWE43i/","count":2},{"name":"小练习","slug":"Z2yHQeB2g","used":true,"link":"https://zydnc.gitee.io/Z2yHQeB2g/","count":1},{"name":"LayUI","slug":"gbAGgIbfN","used":true,"link":"https://zydnc.gitee.io/gbAGgIbfN/","count":2},{"name":"Regex","slug":"NQ4hTFbHKX","used":true,"link":"https://zydnc.gitee.io/NQ4hTFbHKX/","count":2},{"name":"正则表达式","slug":"RTDPTZadb2","used":true,"link":"https://zydnc.gitee.io/RTDPTZadb2/","count":2},{"index":-1,"name":"CSS","slug":"css","used":true,"link":"https://zydnc.gitee.io/css/","count":1},{"name":"前端","slug":"2WP8Q3KZTb","used":true,"link":"https://zydnc.gitee.io/2WP8Q3KZTb/","count":13},{"name":"代理模式","slug":"WZ_jj-ey9","used":true,"link":"https://zydnc.gitee.io/WZ_jj-ey9/","count":1},{"index":-1,"name":"设计模式","slug":"designpatterns","used":true,"link":"https://zydnc.gitee.io/designpatterns/","count":1},{"name":"动态代理","slug":"d4DanwKEpK","used":true,"link":"https://zydnc.gitee.io/d4DanwKEpK/","count":1},{"name":"get","slug":"8OyQWVfwC","used":true,"link":"https://zydnc.gitee.io/8OyQWVfwC/","count":1},{"name":"post","slug":"WNsFqIvlCU","used":true,"link":"https://zydnc.gitee.io/WNsFqIvlCU/","count":1},{"name":"Windows10","slug":"vdEsY_-hV","used":true,"link":"https://zydnc.gitee.io/vdEsY_-hV/","count":1},{"name":"小技巧","slug":"gKHkL-knM","used":true,"link":"https://zydnc.gitee.io/gKHkL-knM/","count":2},{"name":"注册表","slug":"XolcFMCqP","used":true,"link":"https://zydnc.gitee.io/XolcFMCqP/","count":1},{"name":"反射","slug":"j9M5Grf5Z","used":true,"link":"https://zydnc.gitee.io/j9M5Grf5Z/","count":1},{"name":"注解","slug":"ARM0BXY_tP","used":true,"link":"https://zydnc.gitee.io/ARM0BXY_tP/","count":1},{"index":-1,"name":"SemanticUI","slug":"semanticui","used":true,"link":"https://zydnc.gitee.io/semanticui/","count":11},{"name":"timezone","slug":"c3jzsyxhZ","used":true,"link":"https://zydnc.gitee.io/c3jzsyxhZ/","count":1},{"name":"时区","slug":"qaF2dMtBdX","used":true,"link":"https://zydnc.gitee.io/qaF2dMtBdX/","count":1},{"name":"MimeType","slug":"HAZ_qOpu8","used":true,"link":"https://zydnc.gitee.io/HAZ_qOpu8/","count":1},{"name":"Graphics","slug":"7FCmy-M7P","used":true,"link":"https://zydnc.gitee.io/7FCmy-M7P/","count":1},{"name":"JDBC","slug":"_nw6e62q9","used":true,"link":"https://zydnc.gitee.io/_nw6e62q9/","count":1},{"name":"C3P0","slug":"5RyDY5oFU","used":true,"link":"https://zydnc.gitee.io/5RyDY5oFU/","count":2},{"index":-1,"name":"MySQL","slug":"mysql","used":true,"link":"https://zydnc.gitee.io/mysql/","count":3},{"name":"XPath","slug":"8lVIXzXJ8","used":true,"link":"https://zydnc.gitee.io/8lVIXzXJ8/","count":1},{"name":"Jsoup","slug":"GPniBprRN5","used":true,"link":"https://zydnc.gitee.io/GPniBprRN5/","count":1},{"name":"Gson","slug":"05a5Tboj4","used":true,"link":"https://zydnc.gitee.io/05a5Tboj4/","count":1},{"name":"JSON","slug":"EU-phZhGZ","used":true,"link":"https://zydnc.gitee.io/EU-phZhGZ/","count":2},{"name":"org.json","slug":"i5GlEtKUCf","used":true,"link":"https://zydnc.gitee.io/i5GlEtKUCf/","count":1},{"name":"Druid","slug":"D0jYG3ohU","used":true,"link":"https://zydnc.gitee.io/D0jYG3ohU/","count":1}],"menus":[{"link":"/","name":"首页","openType":"Internal"},{"link":"/archives","name":"归档","openType":"Internal"},{"link":"/tags","name":"标签","openType":"Internal"},{"link":"/about","name":"关于","openType":"Internal"},{"link":"/friends","name":"友链","openType":"Internal"}],"themeConfig":{"themeName":"pure","postPageSize":10,"archivesPageSize":50,"siteName":"絷缘的博客","siteDescription":"事实不以人的意志为转移","footerInfo":"Copyright&ensp;&copy;&ensp;絷缘的博客<br/><a href=\"https://beian.miit.gov.cn/\" target=\"_blank\">晋ICP备20001723号-1</a>","showFeatureImage":true,"domain":"https://zydnc.gitee.io","postUrlFormat":"SHORT_ID","tagUrlFormat":"SHORT_ID","dateFormat":"YYYY-MM-DD","feedFullText":false,"feedCount":10,"archivesPath":"archives","postPath":"","tagPath":""},"customConfig":{"APP_ID":"a9RyDdnO2ukMp0rFliauYwMp-gzGzoHsz","APP_KEY":"pmOTBfC3pxhWeynVQqiFIErP","about":"<h2 id=\"简介\">简介😀</h2>\n<p>昵称：絷缘<br>\n<i class=\"fal fa-email\" />邮箱：<a href=\"mailto:zhiyuanworkemail@163.com\">zhiyuanworkemail@163.com</a><br>\n喜欢的书籍：三体<br>\n寄语：事实不以人的意志为转移，要尊重客观规律，充分发挥主观能动性</p>\n<h2 id=\"我的愿望\">我的愿望🌍</h2>\n<pre><code class=\"language-java\">/*\n * **************************************************************************\n * ********************                                  ********************\n * *************************         My Wish        *************************\n * ********************                                  ********************\n * **************************************************************************\n *                                                                          *\n *                                   _oo8oo_                                *\n *                                  o8888888o                               *\n *                                  88&quot; . &quot;88                               *\n *                                  (| -_- |)                               *\n *                                  0\\  =  /0                               *\n *                                ___/'==='\\___                             *\n *                              .' \\\\|     |// '.                           *\n *                             / \\\\|||  :  |||// \\                          *\n *                            / _||||| -:- |||||_ \\                         *\n *                           |   | \\\\\\  -  /// |   |                        *\n *                           | \\_|  ''\\---/''  |_/ |                        *\n *                           \\  .-\\__  '-'  __/-.  /                        *\n *                         ___'. .'  /--.--\\  '. .'___                      *\n *                      .&quot;&quot; '&lt;  '.___\\_&lt;|&gt;_/___.'  &gt;' &quot;&quot;.                   *\n *                     | | :  `- \\`.:`\\ _ /`:.`/ -`  : | |                  *\n *                     \\  \\ `-.   \\_ __\\ /__ _/   .-` /  /                  *\n *                 =====`-.____`.___ \\_____/ ___.`____.-`=====              *\n *                                   `=---=`                                *\n * **************************************************************************\n * ********************                                  ********************\n * ********************      \t\t\t\t               ********************\n * ********************         佛祖保佑 永远无BUG        ********************\n * ********************                                  ********************\n * **************************************************************************\n */\n</code></pre>\n<h2 id=\"声明\">声明📢</h2>\n<p>转载请注明原文链接，这是文明社会对您最基本的要求。</p>\n","avatar":"monsterid","bilibili":"#","caf":"#84fab0","ccf":"#5f6169","ccs":"#999fa7","ctf":"#ffffff","cts":"#dddddd","customCss":"","descfriend":"","dribbble":"#","envelope":"","facebook":"","friends":[{"description":"絷缘挚友","siteLink":"http://www.yqqy.top/","siteLogo":"https://cdn.sep.cc/avatar/cb6c1ca7b5ba419e81281df45dd07d33?s=96&amp;d=mm&amp;r=g","siteName":"Yq's Blog"},{"description":"阳光开朗大男孩","siteLink":"http://www.yolin.xyz","siteLogo":"https://yolin121.gitee.io/images/ayer-side.svg","siteName":"Yolin's Blog"},{"description":"学无止境","siteLink":"https://www.imooc.com/","siteLogo":"https://img0.baidu.com/it/u=436794988,1706929942&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500","siteName":"慕课网"},{"description":"本站使用的开源博客写作工具","siteLink":"https://open.gridea.dev/","siteLogo":"https://open.gridea.dev/media/gridea.png","siteName":"Gridea博客"},{"description":"一款很不错的HTTP接口测试工具","siteLink":"https://apifox.com/","siteLogo":"https://img0.baidu.com/it/u=3266815524,3021057197&fm=253&fmt=auto&app=138&f=PNG?w=243&h=243","siteName":"Apifox"},{"description":"非常期待的国产3A游戏","siteLink":"https://www.heishenhua.com/","siteLogo":"https://pic.zyblog.xyz/avatar/hsh.png","siteName":"黑神话：悟空"},{"description":"一家自主架构的国产CPU公司","siteLink":"https://www.loongson.cn/","siteLogo":"https://pic.zyblog.xyz/avatar/ic_flash_fire_147456.png","siteName":"龙芯中科"},{"description":"阿里巴巴开放使用的AI大模型","siteLink":"https://tongyi.aliyun.com/","siteLogo":"https://img.alicdn.com/imgextra/i4/O1CN01c26iB51UyR3MKMFvk_!!6000000002586-2-tps-124-122.png","siteName":"通义千问"},{"description":"科大讯飞开放使用的AI大模型","siteLink":"https://xinghuo.xfyun.cn/?ch=aY7rJ6","siteLogo":"https://xinghuo.xfyun.cn/static/media/new-avatar.574775e790d04f6d6670.png","siteName":"讯飞星火"},{"description":"OpenAI开放使用的AI大模型","siteLink":"https://chat.openai.com/","siteLogo":"https://pic.zyblog.xyz/AITools/nav_icon/ChatGPT.png","siteName":"ChatGPT"},{"description":"中国载人航天官方网站","siteLink":"https://www.cmse.gov.cn/","siteLogo":"https://pic.zyblog.xyz/avatar/cmse.png","siteName":"中国载人航天"},{"description":"全军武器装备采购信息网","siteLink":"http://www.weain.mil.cn/","siteLogo":"https://pic.zyblog.xyz/avatar/ic_sc_147456.png","siteName":"全军武器装备"}],"ga":"","github":"#","isEnabledCustomColor":false,"mail":"#","pageSize":"5","placeholder":"来发评论吧~","qq":"#","recordIp":true,"skin":"gray","steam":"","telegram":"#","tiktok":"","twitch":"","twitter":"","vMaxWidth":"1000","vPadding":"2.5%","vPercentWidth":"100","valine":false,"visitor":true,"weibo":"","weixin":"","youtube":"","zhihu":""},"utils":{"now":1732378515642}}
